Как стать автором
Обновить
0
0

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

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

Тестирование лучших self-hosted аналогов Notion

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров19K

image


Хабр, в связи с уходом Notion выросла потребность в аналогичном решении, которое бы было сопоставимо удобной Wiki, Task Manager — платформе. 


Я испробовал десять self-hosted решений и нашел несколько почти идеальных! Вы можете развернуть их у себя на сервере, при работе над совместными проектами с командой или для ведения личных записей.

Читать дальше →
Всего голосов 45: ↑43 и ↓2+55
Комментарии34

Принципы SOLID, только понятно

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров78K

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

Изучить принципы
Всего голосов 80: ↑66 и ↓14+59
Комментарии94

Применение чистой архитектуры в Go

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров14K


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

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

Большинство этих инструментов – это частности, и выбор большинства из них (кроме языка программирования) можно на некоторое время отложить, пока проект не окрепнет. Поэтому на ранних этапах разработки проекта стоит уделить внимание не тому, при помощи каких инструментов пойдёт реализация. Лучше смоделировать предметную область проекта, а к вышеупомянутым инструментам подходить так, как следует — то есть, как к частностям. Разумеется, чтобы проект был реализован, с такими деталями тоже нужно определиться, но они могут оставаться в некоторой отдельной части кода, не относящейся к предметной области — там, где их будет легко менять, удалять или заменять по нашему усмотрению.

Для решения именно таких проблем с сильной связностью кода многоопытные инженеры создали ряд архитектурных паттернов. Таковы, в частности, чистая архитектура Роберта Мартина («дядюшки Боба»), гексагональная архитектура Алистера Кокбёрна и явная архитектура Герберто Грацы.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+31
Комментарии5

Что значит быть хорошим разработчиком: 11 полезных советов от сеньора

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

По данным платформы «Авито Услуги», 23% жителей России хотели бы начать карьеру в сфере информационных технологий. Но состояться в профессии сразу же после пары курсов и стажировки не получится. Путь от студента образовательной платформы до разработчика, которого можно назвать хорошим, непростой. Мы собрали рекомендации от тех, кто добился успеха в сфере информационных технологий, чтобы помочь новичкам построить свою карьеру.

Читать далее
Всего голосов 18: ↑11 и ↓7+7
Комментарии23

Книга «Пульсирующая Вселенная»

Время на прочтение19 мин
Количество просмотров13K
imageПривет, Хаброжители!

Мы живем в эпоху космологической революции. Открытие в 2015 году гравитационных волн от слияния множества черных дыр звездных масс закрывает проблему «темной материи», существование которой не могли объяснить более полувека. Это открытие привело к созданию модели осциллирующей Вселенной, в динамике которой гравитационное излучение и черные дыры играют ключевую роль.

Стивен Хокинг считал, что ничто до Большого взрыва не может повлиять на нас. Мы полагаем, что он ошибался: история Вселенной до Большого взрыва имеет важное значение для нашего космологического цикла, и реликты прошлых циклов в изобилии рассеяны вокруг. Главными реликтовыми объектами являются массивные черные дыры.

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

Популярное изложение ключевых проблем космологии и их разрешение с помощью теории осциллирующей Вселенной доступно самому широкому кругу читателей, интересующихся данной темой. В приложении содержится исчерпывающее математическое описание осциллирующей Вселенной с переменной гравитационной массой.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+30
Комментарии27

Бойлерплейт как инструмент стандартизации Go-проектов

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.9K

Трудности в процессе разработки на Go — частая история. Чтобы их преодолеть, нам даже пришлось писать собственный бойлерплейт. Хотя казалось бы — всё уже есть, но нет, нам понадобилось имплементировать собственную хардкорную штуку. Расскажем, почему и зачем.

Читать далее
Всего голосов 9: ↑6 и ↓3+6
Комментарии3

Кто реально угрожает C++ (нет, Rust, не ты)

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

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее
Всего голосов 220: ↑208 и ↓12+244
Комментарии362

Добавили бота в свой Telegram канал? Будьте готовы с ним попрощаться

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров39K

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

Читать далее
Всего голосов 54: ↑51 и ↓3+67
Комментарии68

10 книг по Python: как для новичков, так и для профи

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

Книг по Python довольно много, среди них есть отличные издания, которые будут полезны разработчику любого уровня. Собственно, эту подборку мы и подготовили в расчёте на специалистов с разным опытом и багажом знаний. Книги постарались упорядочить по возрастанию уровня сложности, с указанием плюсов и минусов (если они есть). Итак, поехали!

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии5

[HTTP API & REST] Организация HTTP API согласно принципам REST

Уровень сложностиСложный
Время на прочтение10 мин
Количество просмотров8K

Это глава 37 раздела «HTTP API & REST» моей книги «API». Второе издание книги будет содержать три новых раздела: «Паттерны API», «HTTP API и REST», «SDK и UI‑библиотеки». Если эта работа была для вас полезна, пожалуйста, оцените книгу на GitHub, Amazon или GoodReads. English version on Substack.

Перейдём теперь к конкретике: что конкретно означает «следовать семантике протокола» и «разрабатывать приложение в соответствии с архитектурным стилем REST». Напомним, речь идёт о следующих принципах: операции должны быть stateless; данные должны размечаться как кэшируемые или некэшируемые; интерфейсы взаимодействия между компонентами должны быть стандартизированы; сетевые системы многослойны.

Эти принципы мы должны применить к протоколу HTTP, соблюдая дух и букву стандарта: URL операции должен идентифицировать ресурс, к которому применяется действие, и быть ключом кэширования для GET и ключом идемпотентности — для PUT и DELETE; HTTP‑глаголы должны использоваться в соответствии с их семантикой; свойства операции (безопасность, кэшируемость, идемпотентность, а также симметрия GET / PUT / DELETE‑методов), заголовки запросов и ответов, статус‑коды ответов должны соответствовать спецификации.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии18

Магия оптимизации SQL запросов

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

Даже самый простой SQL запрос можно выполнить по-разному. Но из всех вариантов СУБД нужно выбрать оптимальный, как же это сделать? Неужели придётся перебрать все возможные варианты? Давайте разбираться.

Читать далее
Всего голосов 24: ↑24 и ↓0+24
Комментарии19

Mockoon

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

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

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

Как работать с процессами и потоками в Python

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

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

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

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

Наглядно о том, как работает NumPy

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

Есть тексты, похожие на вино или динамит: с годами они не стареют, а напротив приобретают вес и значимость. Сегодня, к старту флагманского курса о Data Science, мы решили поделиться переводом визуального учебного руководства о NumPy 2019 года, прочитав которое даже не слишком близкий к математике человек поймёт, как работает эта библиотека Python. Если вы не хотите долго объяснять NumPy, но делать это всё равно приходится, положите статью в закладки и она сэкономит ваше время.

Читать далее
Всего голосов 19: ↑18 и ↓1+18
Комментарии8

Аналитика постов на Хабре: почему доскроллы и прочтения в 2-3 раза отличаются от просмотров

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

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

Под катом немного статистики и примеров, а также разбор трех основных причин.

Читать далее
Всего голосов 24: ↑20 и ↓4+26
Комментарии14

Нефункциональные требования к программному обеспечению. Часть 1

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

Введение


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

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

итак, все о НФТ
Всего голосов 19: ↑19 и ↓0+19
Комментарии56

Работа над ошибками. Правдивая история переезда на Sentry в масштабах большой продуктовой компании. Григорий Кошелев

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

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


Sentry — инструмент мониторинга исключений (exception), ошибок в ваших приложениях.



Работа над ошибками – это длинная история про то, как мы большой компанией переходили на Sentry. Этот переход у нас занял порядка двух лет. И маленький спойлер: этот переход еще не во всех местах завершен, но мы делаем работу над ошибками и вроде у нас все хорошо получается.

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

Доказательство с нулевым разглашением (ZKP) — дорожная карта блокчейна

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

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

Доказательство с нулевым разглашением было впервые определено в статье 1985 года "The Knowledge Complexity of Interactive Proof Systems", написанной Шафи Голдвассером и Сильвио Микали. В этой статье авторы показывают, что аттестующий может убедить проверяющего в истинности определенного утверждения о точке данных, не раскрывая никакой дополнительной информации об этих данных.

Zero-Knowledge Proof может быть интерактивным, когда доказывающий убеждает конкретного проверяющего, но должен повторять этот процесс для каждого проверяющего, или неинтерактивным, когда доказывающий создает доказательство, которое может быть проверено любым человеком, использующим то же доказательство. Существует несколько реализаций доказательства нулевого знания, включая zk-SNARKS, zk-STARKS, PLONK и Bulletproofs, каждая из которых имеет свой размер доказательства транзакции, доказательство доказательства, время проверки и многое другое, работая с различными механизмами в своих системах.

Читать далее
Всего голосов 9: ↑4 и ↓5+1
Комментарии3

Гиперрефлексия: как испортить себе жизнь избыточными размышлениями

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

Так как человек - существо биосоциальное, то и статью я начну с части "био". Начну издалека, но вы меня поймете, я уверен. Всегда понимаете, так с чего бы что-то менять?

В общем, тут такое дело... Мой пёс писает себе на пузо. Вот такой прикольный пёс. Учится задирать лапу, писать по-новому, поэтому часто приходит домой с желтым пузом. Конфуз-с, да. Но во время очередной прогулки он начал делать свои дела и, о чудо, идеальный миллиметраж - ни на лапы, ни на пузо не попало! Я так удивился и обрадовался, что не придется его отмывать. И пёс, вероятно, тоже удивился отсутствию привычного ощущения мокрого пуза, поэтому решил посмотреть, всё ли в порядке.

И описал себе всю морду.

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

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

Почему это происходит, как отражается на жизни и что с этим делать - читаем в данной статье.

Обмыслить мысли
Всего голосов 21: ↑18 и ↓3+20
Комментарии26

7 советов начинающему ИП, чтобы избежать проблем (что-то вы точно из этого не знаете)

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


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


А для тех, кто открыл ООО, мы подготовили: 10 вещей, которые обязательно нужно сделать после регистрации ООО
Читать дальше →
Всего голосов 44: ↑41 и ↓3+38
Комментарии72
1
23 ...

Информация

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