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

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

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

Шифруем передаваемые на сайт данные с алгоритмом на основе хаотической системы Лоренца

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

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

В этом году научная работа в университете помогла совместить два этих интереса.  Я посвятил свое исследование применению теории хаоса и задался вопросом: как физические хаотические системы могут помочь в решении задач классической криптографии и спроектировать сильный шифровальный алгоритм.

За основу взял систему дифференциальных уравнений Лоренца и написал новый алгоритм шифрования на njs – на практике это можно применить, например, для шифрования данных на веб-сервере. В посте расскажу, почему Лоренц, почему njs, какие есть варианты реализации и ограничения у выбранного решения.

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

Что почитать тимлиду и СТО: подборка из 50 книг с оценками и не только

Время на прочтение4 мин
Количество просмотров48K
Привет, завтра мы собираем за одним столом руководителей разработки из разных известных компаний — обсудим 6 вечных вопросов: как замерять эффективность разработки, внедрять изменения, нанимать и так далее. Ну а накануне решили поднять седьмой вечный вопрос — что читать, чтобы расти?

Профессиональная литература — сложный вопрос, особенно если говорить о литературе для руководителей в сфере IT. Чтобы понять, на что потратить вечно не хватающее время, мы опросили подписчиков канала «Тимлид Леонид» и собрали подборку из полусотни книг*. А затем добавили отзывы наших тимлидов к самым популярным. Так как список ниже глубоко субъективен и основан на отзывах незнакомых вам людей, оценивать литературу мы будем в «сферических совах».




1. «Джедайские техники. Как воспитать свою обезьяну, опустошить инбокс и сберечь мыслетопливо» / Дорофеев Максим


TL;DR

Из книги вы узнаете:

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

Я бы всем советовал начинать совершенствование тайм-менеджмента именно с этой книги. Но, если вы прочитали уже несколько книг, то и в этой уверен тоже найдете много техник и идей. Полезно *всем*. Читается просто, язык отличный. Также я выписал все книги из примечаний и вписал себе в бэклог.

Оценка: 6,50 сферических сов.


Читать дальше →
Всего голосов 36: ↑31 и ↓5+26
Комментарии17

Инструменты тимлида: как управлять техническим бэклогом

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

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

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии2

Разбираемся в «базовых» алгоритмах для проекта

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

Меня зовут Александр Певненко, я Java developer в СберТехе. Вместе с командой развиваю Platform V DataSpace — BaaS-продукт, обеспечивающий базовые сервисы для работы с данными.

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

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

Поэтому здесь я приведу несколько «базовых» алгоритмов, знание которых помогает мне работать с прицелом на эффективность кода, и дополню примерами на Python и Java.

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

Одно PWA, чтоб править всеми

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

Термин PWA появился еще в 2015 году, но из-за браузерных разногласий долгое время был лишь красивой идеей. В 2023 году возникла надежда, что на iOS появятся альтернативные браузерные движки, а это может привести к тому, что для создания почти полноценных аналогов нативных приложений будет достаточно знаний фронтенда.

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

Делимся расшифровкой доклада и видеозаписью. Повествование будет от лица Никиты.

Читать далее
Всего голосов 24: ↑22 и ↓2+29
Комментарии3

Как разработчику выучить английский язык до высокого уровня для релокации (и не только)?

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

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

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

Грамматика - это важно, однако, нет никакого смысла сидеть над ней часами, заучивая структуры каждого времени. Переходить к изучении грамматики стоит чуть позже, на уровне А2-B1, когда вы уже начнете обладать достаточным уровнем словарного запаса. И опять же, не нужно пытаться заучить все наизусть. Постарайтесь понять суть каждого из времен, а дальше с практикой вы поймете как данные связки начнут воспроизводиться вашим мозгом сами по себе.

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

10 правил, которые выполняют успешные тимлиды

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

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

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

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

Как я переносил блог из CakePHP в Angular

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

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

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

Что же мне предстояло переносить - архитектурное чудо, написанное аутсорсерами на CakePHP в 2012 году. Интерфейс был построен на Twitter Bootstrap и jQuery. Из-за усложнения бизнес логики, в проект добавили AngularJS и десяток библиотек для фингерпринтинга.

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

Шина между Веб-воркерами и основным потоком. Ускоряем работу JavaScript

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

Хотите узнать, как ускорить выполнение JavaScript в веб-приложениях? В этой статье я подробно расскажу о веб-воркерах, шине данных между основным потоком и веб-воркерами, и как это можно применить в Angular, React и Vue, используя мой npm пакет web-worker-bus. Вы узнаете, как вынести тяжелые вычисления в отдельные потоки, организовать обмен данными, и как это все собрать в единую архитектуру. Примеры кода, инструкции и советы внутри помогут вам сделать ваши проекты быстрее и эффективнее с помощью этого инструмента. Освоение этого подхода и использование web-worker-bus может стать значимым улучшением в ваших проектах. Загляните, если интересуетесь оптимизацией JavaScript и хотите узнать, как мой пакет может вам в этом помочь!

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

Делегирование для ООП (Design Patterns) и самый эффективный способ взаимодействия объектов

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

 Мне давно хотелось узнать существуют ли программисты, которые понимают «делегирование» в рамках ООП так же, как я.  А когда я случайно обнаружил что в Шаблонах проектирования (Design Patterns) в фундаментальных трудах признанных классиков концепций программирования пропущено описание для Делегирования, у меня появился повод написать эту статью.

Так получилось, что я сначала познакомился с этой техникой на практике разрабатывая DirectShow фильтры и COM-объекты, которые составляют эти фильтры и меня особо не интересовало как все это по-умному называется пока это все прекрасно работает. Проблемы возникают, когда ты пытаешься объяснить кому-то КАК это работает, или когда ты пытаешься предложить кому-то хотя бы попробовать использовать определенную технику программирования. Вот именно при таких попытках у меня получилось сопоставить что то, что я использую очень подходит под определение Design Pattern: Delegation.

Давайте посмотрим будет это поводом посмеяться или задуматься.

Должен предупредить что тем, кто воспринимает чужое мнение по техническим вопросам как оскорбление только потому, что он не согласен с этим мнением, не нужно читать эту статью.

Кто дочитает до конца найдет ответ на вопрос который задает название.

Читать далее
Всего голосов 10: ↑4 и ↓60
Комментарии14

Разворачиваем веб-приложение в Kubernetes с нуля

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

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

Всё это время для простоты разработки и отладки компоненты приложения запускались локально через Docker Compose. Но как развернуть такое приложение в настоящем продакшн-окружении? Как обеспечить горизонтальное масштабирование? Как раскатывать новые релизы без простоя? 

В этой статье мы разберёмся, как разворачивать многокомпонентное веб-приложение в кластере Kubernetes на примере его локальной реализации — minikube. Мы поднимем виртуальный кластер прямо на рабочем ноутбуке, разберёмся с основными сущностями Kubernetes, запустим и соединим между собой компоненты демо-приложения и обсудим, какие ещё возможности Kubernetes пригодятся нам в суровом энтерпрайзе. Если вы занимаетесь разработкой и слышали о Kubernetes, но ещё не имели возможности пощупать его руками — добро пожаловать под кат!

Скорее к YAML-инженерии
Всего голосов 38: ↑38 и ↓0+38
Комментарии10

UML для самых маленьких: диаграмма классов

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


Аве, Кодер! Диаграмма классов UML иллюстрирует структуру системы, описывая классы, их атрибуты, методы и отношения между объектами.

Даже самые малые детки знают, что UML происходит от Unified Modeling Language, если по- русски, то — унифицированный язык моделирования, который, как гласит легенда, разработали, когда серьезные дяди и тети в конец задолбались плавать в разнообразии кружочков, черточек и облачков.

Для тех, кому лень читать:

Всего голосов 10: ↑6 и ↓4+5
Комментарии4

За один проход

Время на прочтение7 мин
Количество просмотров156K
Среди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:

Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число

Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
Другие задачи
Всего голосов 73: ↑72 и ↓1+71
Комментарии56

Новое слово в TypeScript 5.2

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

Привет! Представляю вашему вниманию перевод статьи Matt Pocock.
Источник

TypeScript 5.2 представит новое ключевое слово - 'using', которое можно использовать, чтобы избавиться от чего угодно с помощью функции Symbol.dispose, при покидании области видимости.

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

Теория: nx — инструмент по работе с микрофронтендами

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

Как не утонуть новичку в документации nx?

Разберем основные понятия и концепции по работе с монорепозиторием под управлением nx.

А также укажу некоторые особенности о которых нужно знать, чтобы "не выстрелить себе в ногу".

Читать далее
Рейтинг0
Комментарии0

Как сделать авторизацию блокчейне TON на DART с помощью кошелька через TON Connect

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

В данной статей будет показано, как использовать библиотеку darttonconnect для быстрого создания авторизации и отправки транзакций для блокчейна TON. Таким образом можно быстро создавать кроссплатформенные приложения на Flutter для блокчейна TON.

Читать далее
Всего голосов 2: ↑1 и ↓10
Комментарии1

Как No-code и генеративный ИИ позволяют за секунды создавать новые сайты

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

Фронтенд и бекенд — прошлый век?

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

Создание сайта с нуля у опытного разработчика займет в среднем от 100 до 500 часов. Причем если нужен уникальный дизайн и множество картинок, это ещё и выльется в копеечку. Но, оказывается, люди без опыта и знаний уже делают сайты бесплатно, и за 10 минут (или 10 секунд, если используют один из сервисов). Не имея ни малейшего понятия о том, что такое PHP, Python или Java.

Разберем на примерах, как это происходит. И посмотрим на три уровня использования генеративных ИИ для создания сайтов.

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

Ошибки выбора MongoDB в качестве основной БД в стартапе

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

В этой статье я хочу рассказать о своих ошибках, которые я допустил, когда писал сервис, у которого MongoDB была основной БД для хранения пользовательских данных (да и не только, но об этом ниже).

Я ни в коем случае не считаю, что MongoDB это плохая БД и ее не нужно использовать. Более того, я считаю, что только мои кривые руки завели меня в ситуацию, из которой пришлось выходить переписыванием сервиса под другую БД (ушел на Postgres и кайфую).

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

На мой взгляд, маркетологи MongoDB приукрасили области применениях БД на своем сайте. MongoDB не универсальная. Далеко не универсальная и даже не пытайтесь на нее смотреть как на решение всех ваших проблем.

Встать на грабли вместе
Всего голосов 136: ↑112 и ↓24+115
Комментарии131

Спросим у Google, насколько наша встреча была предначертана судьбой

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

Введение


Когда я познакомилась со своим бойфрендом, я иногда ощущала небольшое сожаление от того, что у нас не было умилительной киношной истории встречи, несмотря на то, что мы пять лет жили в одном и том же городе и учились в одном университете. Наша история не уникальна для многих пар в 2020 году: на спаде между двумя волнами COVID мы начали общаться онлайн, в приложении для знакомств Bumble.

Я подумала, что благодаря истории местоположений Google, втихомолку отслеживающей данные GPS, можно было бы найти ответ на вопрос о том, насколько судьбоносно пересекались наши дорожки до встречи. Насколько близко мы были к тому, чтобы воспроизвести романтическую сцену «среди десятков людей они нашли глазами друг друга»?
Читать дальше →
Всего голосов 72: ↑70 и ↓2+88
Комментарии22

Vue или React? Кратко о возможном росте технического долга и что лучше для начинающих

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

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

Что подразумевается под необоснованной сложностью проектов?

Для начала необходимо отметить, что «React» в отличии от «Vue» предоставляет огромную свободу разработчику. Благодаря этому разработчики любят данный фреймворк и всячески указывают, что приложения на «React» будут быстрее и производительнее чем на «Vue». Это несомненно так, «React» приложения можно сделать быстрым, производительным и легко тестируемым. К сожалению, достичь этого крайне тяжело и из-за этого многие компании могут иметь не высокопроизводительные приложения, а наоборот перегруженные излишним кодом и трудно тестируемые приложения. Это связанно с тем, что начинающим разработчикам сложно понять, как правильно писать приложения на «React».

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

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

Информация

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