Pull to refresh
2
0
fedor108 @fedor7

User

Send message

Изучение TypeScript — Полное руководство для начинающих. Часть 1 — Введение и примитивные типы данных

Reading time5 min
Views81K

Всем привет. Меня зовут Лихопой Кирилл и я - Fullstack-разработчик.

Представляю вашему вниманию cвою первую статью на Хабре, a точне перевод англоязычной статьи, на тему изучения TypeScript (TS, Тайпскрипт).

Другие части:
Часть 2 - Ссылочные типы данных
Часть 3 - Классы и интерфейсы
Часть 4 - Литералы и дженерики
Часть 5 - Строгий режим и сужение типов

Читать далее
Total votes 12: ↑8 and ↓4+7
Comments9

Книга «Профессиональный TypeScript. Разработка масштабируемых JavaScript-приложений»

Reading time10 min
Views14K
image Любой программист, работающий с языком с динамической типизацией, подтвердит, что задача масштабирования кода невероятно сложна и требует большой команды инженеров. Вот почему Facebook, Google и Microsoft придумали статическую типизацию для динамически типизированного кода.

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

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

Борис Черный помогает разобраться со всеми нюансами и возможностями TypeScript, учит устранять ошибки и масштабировать код.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments5

Книга «Масштабируемый рефакторинг. Возвращаем контроль над кодом »

Reading time12 min
Views5.7K
image Привет, Хаброжители! Поддерживать большие приложения сложно, а поддержка больших «неорганизованных» приложений превращается в непосильную задачу. Пришло время сделать паузу и задуматься о рефакторинге! Внесение значительных изменений в крупную и сложную кодовую базу — нетривиальная задача, которую практически невозможно успешно выполнить без рабочей команды, инструментов и планирования. Мод Лемер раскрывает все тайны рефакторинга на примере двух исследований. Вы научитесь эффективно вносить важные изменения в кодовую базу, узнаете, как деградирует код и почему иногда это неизбежно.

Рефакторингу посвящено уже много книг, но в большинстве из них рассматриваются детали улучшения небольших частей кода по строке за раз. Однако мне кажется, что самая сложная часть рефакторинга не в поиске точного способа улучшения кода, а скорее в происходящих вокруг него процессах. Можно пойти еще дальше и сказать, что для любого крупного программного проекта мелочи редко имеют значение. Самая большая проблема кроется в координации сложных изменений.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments1

Несложные оптические трюки со смартфоном: голограмма и проектор

Reading time9 min
Views65K

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

В качестве руководства будем использовать видеолекции курса «Galaxy Upcycling – новая жизнь старого смартфона» который можно посмотреть на YouTube канале «IT ШКОЛЫ Samsung». Курс подготовлен российским Исследовательским центром Samsung (Samsung Research Russia) сотрудником которого я являюсь. При создании курса было решено двигаться в сторону образования и экспериментов. Основу курса составляют практико-ориентированные занятия с обучающими примерами, объясняющими, как превратить старый гаджет на платформе Android в новое устройство: мини-проектор, часы, умную гирлянду и т.д.

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

Поехали!

Читать далее
Total votes 32: ↑31 and ↓1+35
Comments15

Как объединить 5 языков программирования в одном Python проекте?

Reading time7 min
Views32K

На сегодняшний день существует несколько тысяч языков программирования, каждый из которых создавался с определенной целью, пытаясь изменить и улучшить недостатки своих предшественников. Так, например, появился язык Kotlin, который был нацелен на замену Java в мобильной разработке. В 2010 году увидел свет язык Rust, разработчики которого пытались создать быстрый и безопасный язык, который закрывал бы многие недостатки C/C++.

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

Но как объединить несколько разных языков в одном приложение, чтоб это работало?

Ознакомиться
Total votes 18: ↑17 and ↓1+17
Comments10

Валидация: внутри сущностей или снаружи?

Reading time3 min
Views20K
Обратите внимание, что хотя пост написан от первого лица, это перевод статьи из блога Jimmy Bogard, автора AutoMapper.

Меня часто спрашивают, особенно в контексте архитектуры вертикальных слоев (vertical slice architecture), где должна происходить валидация? Если вы применяете DDD, вы можете поместить валидацию внутри сущностей. Но лично я считаю, что валидация не очень вписывается в ответственность сущности.

Часто валидация внутри сущностей делается с помощью аннотаций. Допустим, у нас есть Customer и его поля FirstName/LastName обязательны:
public class Customer
{
    [Required]
    public string FirstName { get; set; }
    [Required]
    public string LastName { get; set; }
}

Проблем с таким подходом две:
  • Вы изменяете состояние сущности до валидации, то есть ваша сущность может находиться в невалидном состоянии
  • Неясен контекст операции (что именно пытается сделать пользователь)

И хотя вы можете показать ошибки валидации (обычно генерируемые ORM) пользователю, не так-то просто сопоставить исходные намерения и детали реализации состояния. Как правило, я стараюсь избегать такого подхода.
Читать дальше →
Total votes 17: ↑14 and ↓3+11
Comments39

Domain-driven design: рецепт для прагматика

Reading time21 min
Views68K

Почему к DDD обычно подходят не с той стороны? А с какой стороны надо? Какое отношение ко всему этому имеют жирафы и утконосы?

Специально для Хабра — текстовая расшифровка доклада «Domain-driven design: рецепт для прагматика». Доклад был сделан на .NET-конференции DotNext, но может пригодиться не только дотнетчикам, а всем интересующимся DDD (мы верим, вы осилите пару примеров кода на C#). Видеозапись доклада также прилагается.
Total votes 45: ↑44 and ↓1+43
Comments29

Как устроен Domain-Driven Design

Reading time13 min
Views45K

Многие проекты на Django начинаются просто: есть база данных и к приложению, которое крутится на сервере, идут обращения. Например, так начиналась Dodo IS (информационная система компании Додо Пицца, где работал автор сегодняшней статьи). Но если использовать Django из коробки, можно натворить много бед и встретить пачку антипаттернов. Возможно, вы встречали такое на старых legacy-проектах.

Евгений Пешков развивает сообщество DDD-практиков, рассказывая, какие проблемы решает Domain-Driven Design (предметно-ориентированное проектирование) в современном мире. На конференции Russian Python Week 2020 он выступил с рассказом об этом. Кстати, 19 августа пройдет встреча DDDevotion-сообщества, присоединяйтесь, будем о чем поговорить.

В сегодняшней статье будет его рассказ про то, как устроен Domain-Driven Design и какие инструменты использует, чтобы наиболее точно описать требования бизнеса и сам бизнес.

Читать далее
Total votes 36: ↑36 and ↓0+36
Comments28

Мониторинг пет-проектов на коленке: Netdata, Monitoror, N8N

Reading time5 min
Views8.6K

Привет, я Паша из Ozon. В рабочее время занимаюсь тестированием поиска, а по вечерам надеваю маску инди-разработчика. И моя самая частая задача — написать скрипт → залить его на сервер → периодически мониторить, что сервер доступен. Эта статья как раз и будет строиться вокруг последнего пункта.

Вы наверняка в курсе, что существуют Grafana, Prometheus, Kibana, LogDNA и другие инструменты для мониторинга, визуализации и анализа данных. C первыми двумя я вплотную познакомился в Ozon, а про Kibana слышал когда-то давно и только в паре со словом «логи». Чтобы графики в Grafana рисовать — придется штат аналитиков нанять (ба-дум-тсс). Для пет-проекта это перебор, нужно что-то сильно проще (с точки зрения стоимости, простоты настройки и удобства). Ниже расскажу, какие готовые инструменты для мониторинга небольших пет-проектов я нашёл в пучинах интернета, а также оставлю комментарии и рекомендации по использованию.

Читать далее
Total votes 14: ↑13 and ↓1+18
Comments21

9 советов по увеличению скорости Wi-Fi

Reading time10 min
Views80K

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

9 советов по увеличению скорости WiFi
Total votes 19: ↑8 and ↓11-1
Comments34

Лемма Ито

Reading time6 min
Views16K

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

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments3

Run, config, run: как мы ускорили деплой конфигов в Badoo

Reading time8 min
Views5.7K

Файлы конфигурации (конфиги) — неотъемлемая часть большинства приложений, но, как показывает практика, это не самая популярная тема для обсуждения. Чаще всего разговоры о конфигах ограничиваются обсуждением работы с ними непосредственно в коде: как их структурировать, использовать переменные окружения или нет, где хранить пароли и т. п. 

На мой взгляд, есть и другая сторона работы с конфигами, которая заслуживает внимания, — развёртывание (деплой). За свою карьеру я видел довольно много способов деплоя конфигов и уверен, что каждый может узнать об этом что-то новое.

Несколько лет назад я работал над системой, которая позволила нам ускорить процесс деплоя конфигов на 1000+ серверов с минуты до нескольких секунд. 

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

Читать далее
Total votes 34: ↑34 and ↓0+34
Comments11

Цензура в интернете. Надо что-то делать

Reading time6 min
Views34K

Интернет сегодня как воздух. Его никто не замечает и принимает как должное до тех пор, пока его кто-то не испортит или не отключат вовсе (привет горячему августу 2020 в РБ). В данной статье я расскажу, какие меры можно предпринять, имея в руках только браузер. Каждый инструмент вне браузера -- это тема для отдельной публикации

PS: а ещё вангую реакцию: "О, прикольно. Добавлю в закладки. Почитаю как-нибудь потом". Ага, когда интернет пропадёт?

Читать далее
Total votes 52: ↑38 and ↓14+32
Comments148

Какой должна быть команда стартапа

Reading time4 min
Views13K
Создание команды — это вопрос, с которым рано или поздно сталкиваются все основатели стартапов. Момент, когда этот вопрос займет все время и все мысли фаундера наступает неминуемо, когда после питча, инвестор задает вопрос: «Есть ли у вас в команде необходимые люди для реализации вашей прекрасной идеи?» Поэтому лучше озаботиться подбором команды уже на первых этапах жизни стартапа, чтобы красиво ответить на этот вопрос инвестора: «У нас есть все необходимые люди, когда вы познакомитесь, у вас не останется сомнений, что мы достигнем цели». 

Читать дальше →
Total votes 4: ↑3 and ↓1+5
Comments18

Веб-разработка с нуля: руководство для молодых команд по созданию инфраструктуры CI/CD и процесса разработки

Reading time12 min
Views32K

Чуть больше года назад я столкнулся с тем, что на внутреннем проекте совсем не айтишной компании вырос целый отдел веб-разработки, которым мне и довелось руководить. Рабочий процесс вроде как устаканился и всех устраивал, но оставались проблемы:


  • Проверка каждой ветки проходила локально. Приходилось откатывать базу от изменений с предыдущей проверки, билдить фронт. Когда несколько разработчиков вот-вот закончат работы и осталось проверить каждую по мелочи — это превращалось в ад;
  • Различались окружения на проде и между разработчиками, что приводило к ошибкам: “у меня всё работает”.

Внутренний перфекционист жаждал организовать всё правильно. Делюсь результатами поисков ответа на вопрос: «а как, собственно, “правильно”»?


Мы добились


  • Легкого и быстрого деплоя в production (ради эксперимента выводили каждый день две недели подряд);
  • Гарантию защищённости от ошибок из-за различий в окружении приложения;
  • Можем организовать эффективное взаимодействие с заказчиком:
    • демонстрировать каждую feature-ветку;
    • давать гостевой доступ для создания задач и наблюдения над ходом работ.

Данная статья будет полезна, если вы:


  • начинающая IT-компания или в первый раз столкнулись с работой в команде над большим проектом;
  • хотите обновить свой устаревший процесс разработки (workflow);
  • ищете лучшие практики и хотите посмотреть, как у других;
  • часто натыкаетесь на статьи про DevOps, CI/CD, облака и хотите, чтобы у вас одним нажатием кнопки создавались тестовые окружения, а очередное обновление прода не было рулеткой.

Под катом вы найдёте


  • типовой рабочий процесс от постановки задач до релиза;
  • инфраструктурное решение для построения любого современного процесса разработки с использованием минимального количества инструментов;
  • пример для часто встречающегося кейса: разработка веб-приложения;
  • видеозапись доклада, где вживую показывается результат.

Читать дальше →
Total votes 19: ↑18 and ↓1+28
Comments48

Массивы в РНР 7: хэш-таблицы

Reading time22 min
Views36K
Хэш-таблицы используются везде, в каждой серьёзной С-программе. По сути, они позволяют программисту хранить значения в «массиве», индексируя его с помощью строк, в то время как в языке С допускаются только целочисленные ключи массива. В хэш-таблице строчные ключи сначала хэшируются, а затем уменьшаются до размеров таблицы. Здесь могут возникать коллизии, поэтому нужен алгоритм их разрешения. Существует несколько подобных алгоритмов, и в РНР используется стратегия связных списков (linked list).

В Сети есть немало замечательных статей, подробно освещающих устройство хэш-таблиц и их реализации. Начать можно с http://preshing.com/. Но имейте в виду, вариантов структуры хэш-таблиц — несметное множество, и ни один из них не совершенен, в каждом есть компромиссы, несмотря на оптимизацию циклов процессора, использования памяти или хорошее масштабирование потокового окружения (threaded environment). Одни варианты лучше при добавлении данных, другие — при поиске и т. д. Выбирайте реализацию в зависимости от того, что для вас важнее.

Хэш-таблицы в РНР 5 подробно рассмотрены в материале phpinternalsbook, который я написал вместе с Nikic, автором хорошей статьи про хэш-таблицы в РНР 7. Возможно, её вы тоже сочтёте интересной. Правда, она писалась до релиза, поэтому некоторые вещи в ней слегка отличаются.

Здесь же мы подробно рассмотрим, как устроены хэш-таблицы в РНР 7, как с ними можно работать с точки зрения языка С и как ими управлять средствами РНР (используя структуры, называемые массивами). Исходный код в основном доступен в zend_hash.c. Не забывайте, что хэш-таблицы мы используем везде (обычно в роли словарей), следовательно, нужно проектировать их так, чтобы они быстро обрабатывались процессором и потребляли мало памяти. Эти структуры решающе влияют на общую производительность РНР, поскольку местные массивы не единственное место, где используются хэш-таблицы.
Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments14

Собеседование php-developer (вопросы и ответы)

Reading time10 min
Views244K
Так уж получилось, что в этом году я прошел ряд собеседований на позицию PHP разработчика, чего я не делал уже несколько лет. Будучи человеком ленивым практичным, перед собеседованием я попытался найти сборники вопросов-ответов, но все найденное было довольно старым, поэтому я решил сам подготовить список вопросов, которые встречал.

Обычно в статьях такого рода даются полные ответы на вопросы, но если вы собеседуетесь на достаточно серьезную позицию, краткой выжимки будет явно недостаточно и необходимо довольно глубоко понимать сам вопрос, поэтому я в основном вставил ссылки на документацию или статьи по описываемым вопросам.
Читать дальше →
Total votes 25: ↑22 and ↓3+26
Comments18

Standard PHP Library (SPL) — Часть 1: Структуры данных

Reading time5 min
Views64K
Привет, Хабр! В данной статье речь пойдет про Standard PHP Library (SPL). На хабре до сих пор нет толкового мануала об этой библиотеке, которая уже стала частью ядра PHP (с версии 5.3). Данная библиотека содержит набор интерфейсов, классов структур данных, итераторов и функций, с помощью которых можно значительно упростить себе жизнь и повысить качество кода. В данной статье я рассматриваю такую часть библиотеки, как структуры данных. Также я покажу альтернативные решения поставленных задач и сравню скорость выполнения в обоих случаях.

Подробнее
Total votes 66: ↑56 and ↓10+46
Comments38

Хороший договор — короткий договор

Reading time8 min
Views28K

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

Большинство договоров пишут юристы, а руководители, продажники и клиенты, похоже их не читают. Да их и невозможно прочесть. Много ли людей читают договор с банком или лицензионное соглашение?! Или договор с оператором сотовой связи или провайдером?! Скучное и бесполезное занятие. Всё равно на текст договора чаще всего никак не повлиять в крупных компаниях.  

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

Предлагать клиентам подписать договор, который бы не хотел подписывать сам — хамство.

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

Читать далее
Total votes 48: ↑39 and ↓9+48
Comments174

Переезд инженера на Кипр: работа и зарплаты, море и природа

Reading time7 min
Views28K

Здесь и далее автор фото: @nati_kseni


По версии компании Mercer, Лимассол входит в топ-100 городов в рейтинге качества жизни за 2019 год, находясь сразу за Куала-Лумпуром и опережая, например, Ригу и греческие Афины. В еще одном рейтинге Quality of Life Index от сайта Numbeo, Кипр обходит не только все страны Восточной Европы, но и, например, Италию:



Неудивительно, что уже несколько лет как Кипр стал центром постсоветской IT-индустрии. Находящиеся на острове компании активно нанимают инженеров из России и соседних стран. Поэтому мы решили составить небольшой гайд для инженеров, которые подумывают о переезде на Кипр.
Читать дальше →
Total votes 18: ↑9 and ↓9+4
Comments19
1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity