Как стать автором
Обновить
0
@dashasalmiiarovaread⁠-⁠only

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

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

Заменяй и властвуй — подход SOLID для разработки повторно используемых компонентов в вебе

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

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


Эта статья во многом вдохновлена докладом Павла Силина на РИТ 2017, однако здесь много моего собственного опыта и размышлений. Примеры будут на React + TypeScript, однако подход не привязан к какой-либо технологии.


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

Зачем нам UML? Или как сохранить себе нервы и время

Время на прочтение5 мин
Количество просмотров267K
Многие программисты, столкнувшись со сложной задачей, пренебрегают этапом проектирования, ссылаясь на то, что проектирование — это потеря времени, и в данном случае оно будет мне только мешать.


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

Программисты, не использующие UML, делятся на несколько групп:

  • начну писать код, а в процессе пойму, что да как;
  • почитаю форумы, хабр, medium, stack overflow, книгу, записи на стенах, знаки свыше…;
  • поспрашиваю у коллег, может, кто-то знает, как решить подобную задачу;
  • начну рисовать квадратики и схематично покажу, какое видение задачи сформировалось у меня в сознании.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии67

UML, Классы и Отношения

Время на прочтение10 мин
Количество просмотров67K
Существует много разработанных теорий, задокументированных технологий и парадигм программирования. Перед тем как углубиться с головой в их изучение было бы мудро изучить сам принцип взаимодействия программ и их структур. UML предлагаем вам разработанный стандарт что бы сделать это.

подробности
Всего голосов 85: ↑66 и ↓19+47
Комментарии46

Бесплатные практические курсы по основам программирования на JavaScript

Время на прочтение2 мин
Количество просмотров85K
Привет, Хабр!

Мы на Хекслете закончили полный цикл курсов по обучению PHP-программистов и переключились на стек JavaScript. Первые два курса новой программы уже доступны, и они бесплатные!

Курс «Основы программирования» — это знакомство с миром разработки и языком JavaScript. Курс рассчитан на новичков без опыта в программировании, но будет полезен и многим практикующим программистам, потому что покрывает таки темы как рекурсивные и итеративные процессы, чистые функции и побочные эффекты, автоматические тесты и модульное тестирование.

Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии21

Расчет биномиальных коэффициентов на Си (С++) и Python

Время на прочтение9 мин
Количество просмотров58K
При решении задач комбинаторики часто возникает необходимость в расчете биномиальные коэффициентов. Бином Ньютона, т.е. разложение image также использует биномиальные коэффициенты. Для их расчета можно использовать формулу, выражающую биномиальный коэффициент через факториалы: image или использовать рекуррентную формулу:image Из бинома Ньютона и рекуррентной формулы ясно, что биномиальные коэффициенты — целые числа. На данном примере хотелось показать, что даже при решении несложной задачи можно наступить на грабли.
Читать дальше →
Всего голосов 28: ↑19 и ↓9+10
Комментарии73

Как делать сайты в 2019 году

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

Веб стремительно меняется, не отставай и ты!



Я писал подобную статью в 2018 году, но веб меняется так быстро, что те гайдлайны уже безнадёжно устарели.


Давайте-ка шаг за шагом разберём важнейшие принципы веб-дизайна в 2019 году.


Обязательно дайте пользователю знать, что у сайта есть мобильное приложение


Это важнейший принцип, и на то есть свои причины. Фокус-группы, на которые мы уже потратили кучу денег, показали что первое же, чего захочет пользователь попав на ваш сайт — установить мобильное приложение.


Ну а кратчайший путь к этому — показать здоровенное модальное окно:



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


Совет: Если у вас нет мобильного приложения, не беда! Просто запихните весь сайт в  webview с отключенной безопасностью и пишите, что это мобильное приложение!

Читать дальше →
Всего голосов 244: ↑233 и ↓11+222
Комментарии278

Отношения классов — от UML к коду

Время на прочтение7 мин
Количество просмотров756K
Введение

Диаграмма классов UML позволяет обозначать отношения между классами и их экземплярами. Для чего они нужны? Они нужны, например, для моделирования прикладной области. Но как отношения отражаются в программном коде? Данное небольшое исследование пытается ответить на этот вопрос — показать эти отношения в коде.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии21

Ежедневные собрания в Agile разработке: 15 минут, без которых не видать релиза

Время на прочтение6 мин
Количество просмотров69K
Большинство IT-компаний привыкли к ежедневным внутренним митингам, статусным собраниям или коротким stand up, которые призваны оптимизировать процессы и синхронизировать работу всех членов команды. Оптимально, если такие встречи не будут превышать 15-20 минут.

image
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии14

Пишем первое приложение для Android

Время на прочтение8 мин
Количество просмотров550K
В любом деле самое сложное — это начало. Часто бывает тяжело войти в контекст, с чем столкнулся и я, решив разработать свое первое Android-приложение. Настоящая статья для тех, кто хочет начать, но не знает с чего.

Статья затронет весь цикл разработки приложения. Вместе мы напишем простенькую игру “Крестики-Нолики” с одним экраном (в ОС Android это называется Activity).

Отсутствие опыта разработки на языке Java не должно стать препятствием в освоении Android. Так, в примерах не будут использоваться специфичные для Java конструкции (или они будет минимизированы на столько, на сколько это возможно). Если Вы пишете, например, на PHP и знакомы с основополагающими принципами в разработке ПО, эта статья будет вам наиболее полезна. В свою очередь так как, я не являюсь экспертом по разработке на Java, можно предположить, что исходный код не претендует на лейбл “лучшие практики разработки на Java”.

Читать дальше →
Всего голосов 197: ↑170 и ↓27+143
Комментарии68

Выбираем доменную зону

Время на прочтение9 мин
Количество просмотров124K
Более 24 лёт прошло с изобретения доменных имён (и 18 — с создания Всемирной паутины), а люди так до конца и не освоились в вопросе выбора доменного имени для сайта.

До сих пор распространено нелепое суеверие, будто домены третьего уровня менее привлекательны, нежели домены второго уровня; более того, не так давно мне приходилось сталкиваться с утверждениями, будто домен в зоне .info неприличен — и почему? только лишь из-за низкой цены!

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

Читать дальше →
Всего голосов 62: ↑51 и ↓11+40
Комментарии193

Дискретная математика для первокурсников: опыт преподавателя

Время на прочтение12 мин
Количество просмотров123K
Сегодня у меня необычный текст, совершенно не связанный с машинным обучением (для новых читателей: этот текст – часть блога компании Surfingbird, в котором я в течение последнего года рассказывал о разных аппаратах машинного обучения в приложении к рекомендательным системам). В этом посте математической части практически не будет, а будет описание очень простой программки, которую я написал для своих студентов. Вряд ли кто-то узнает для себя из этого поста много содержательно нового, но мне кажется, что некоторую ценность представляет сама идея – многие люди просто не задумываются о том, что «и так можно». Итак…

Читать дальше →
Всего голосов 64: ↑57 и ↓7+50
Комментарии35

Код Прюфера

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

Деревья. Кратко напомним


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


Читать дальше →
Всего голосов 41: ↑34 и ↓7+27
Комментарии17

Иногда стартап должен быть медленным

Время на прочтение3 мин
Количество просмотров1.2K
Выкладываю перевод статьи про стартапы, которые оказались слишком… быстрыми и опередили свое время. С другой стороны, каждая идея принесла успех, но немного позже.

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

Итак, перед вам несколько историй неуспеха, в каждой вы без труда заметите, во что это переросло.
Читать дальше →
Всего голосов 59: ↑54 и ↓5+49
Комментарии61

Алгоритмы на графах — Часть 2: Сортировка сетей

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

Пролог

В продолжение опубликованной на выходных статьи.

Компиляторы — пожалуй одна из самых интересных тем системного программирования.
Эта статья не расскажет как написать идеальный, или, хотя бы, работающий компилятор, но она поможет прояснить пару аспектов его работы, при помощи метода топологической сортировки сети.
Читать дальше →
Всего голосов 68: ↑65 и ↓3+62
Комментарии22

Графы для самых маленьких: Ford & Bellman или как понять, что ты попал в бесконечно далекое прошлое

Время на прочтение3 мин
Количество просмотров59K
В предыдущих частях цикла мы рассмотрели алгоритмы DFS и BFS, позволяющие найти путь в графе и обладающие рядом других интересных свойств. Но в жизни очень часто оказывается, что гораздо проще выглядит модель задачи в виде графа с неодинаковыми длинами ребер. Поиском кратчайшего пути во взвешенном графе мы и займемся под катом.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии5

Число Бейкона и Графы

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

Число Бейкона


Немного истории, Кевин Бейкон американский актёр сыгравший во множествах фильмам, в 1994 отметил что актёры, с которыми он снимался, работали со всеми голливудскими (и не только) актёрами. Общественность тут же отреагировала и создала игру “назвать имя актёра и связать его с Кевином Бейконом”. Корпорация добра даже встроила игру в свой поисковик, например Число Бейкона для актёра Джона Траволты равно 2 (Джон снимался с Оливией Ньютон-Джон в фильме Бриолин, она же, в свою очередь, сыграла с Кевином Бейконом в фильме “У нее будет ребенок”).

А теперь давайте поговорим о том, как эту игру можно представить, и как можно вычислить число Бейкона при помощи графа.
Читать дальше →
Всего голосов 23: ↑13 и ↓10+3
Комментарии6

Алгоритмы на графах — Часть 1: Поиск в глубину и проблема взаимоблокировок

Время на прочтение6 мин
Количество просмотров66K
Недавно на Хабре была статья, посвященная алгоритмам на графах. С позволения автора, мой первый хабратопик продолжит цикл.

Хотелось бы осветить вопросы применения некоторых алгоритмов, для решения задач программирования.
Достаточно жизненный пример, с которым сталкивался не один разработчик — это deadlock. По сути deadlock – это взаимоблокировка, в результате которой система, или какие-то отдельные процессы начинают конкурировать за один ресурс.
В жизни такие ситуации встречаются, например, когда два человека желают пропустить друг друга на входе, предположим, в аудиторию. Однако после 3-4 фраз «только после вас!», кто-нибудь всё же пройдет первым.
На уровне программного обеспечения всё сложнее, пока программы не способны думать, машинный аналог фразы «только после вас!» будет повторяться вплоть до перезагрузки.
Как исполняющая система может повлиять на этот процесс? Вот тут нам на помощь и приходят алгоритмы на графах.
Для начала определимся, что же будет элементами нашего графа, и как его составить.
Читать дальше →
Всего голосов 61: ↑50 и ↓11+39
Комментарии20

Поиск нечетких дубликатов. Алгоритм шинглов для веб-документов

Время на прочтение4 мин
Количество просмотров44K
Ранее я показал элементарную реализацию алгоритма шинглов, позволяющую определять, являются ли два документа почти дубликатами или нет. В этот раз я поясню реализацию алгоритма, описанную Зеленковым  Ю. Г. и Сегаловичем И.В. в публикации «Сравнительный анализ методов определения нечетких дубликатов для Web-документов».
Этим я начинаю серию из трех теоретических статей, в которых постараюсь доступным языком описать принцип алгоритмов шинглов, супершинглов и мегашинглов для сравнение веб-документов.
Читать дальше →
Всего голосов 55: ↑53 и ↓2+51
Комментарии103

Об информационном поиске, нахождении оптимальных путей просмотра результатов поиска и многом другом

Время на прочтение6 мин
Количество просмотров3K
Задача нахождения оптимальных путей просмотра результатов поиска является моей основной темой кандидаткой работы. Сегодня я хочу поделиться промежуточными результатами исследований, а также приложениями и SDK, которые были использованы в работе.

Решение о написании данной статьи было принято после просмотра семинара из цикла «Информационный поиск и анализ данных» на тему «Семантический анализ текстов с использованием Википедии», докладчиком которого был Максим Гринёв — доцент, старший преподаватель кафедры системного программирования, заведующий отделом ИСП РАН.

Вы можете посмотреть доклад, скачать доклад или посмотреть расписание других докладов.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии6

Простое объяснение алгоритмов поиска пути и A*

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

Часть 1. Общий алгоритм поиска


Введение


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

Цель данной статьи — объяснить поиск пути в целом и A* в частности очень понятным и доступным образом, положив таким образом конец распространённому заблуждению о том, что эта тема сложна. При правильном объяснении всё достаточно просто.

Учтите, что в статье мы будем рассматривать поиск пути для игр; в отличие от более академических статей, мы опустим такие алгоритмы поиска, как поиск в глубину (Depth-First) или поиск в ширину (Breadth-First). Вместо этого мы постараемся как можно быстрее дойти от нуля до A*.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии11

Информация

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