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

Не проходите мимо, стадо хомячков, ставьте диз! :D

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

Проблемы в процессах непрерывной доставки и развертывании программного продукта

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


Статью подготовил Брюханов Константин, руководитель курса «CI/CD». В ней Константин раскрыл ряд проблемных моментов, связанных доставкой развертыванием кода программного продукта в IT-компаниях, и собрал рекомендации из числа лучших международных практик.



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

Технологический прорыв и свободно-распространяемое ПО привели к тому, что подход к организации процессов CI/CD значительно изменился. Переход на новые принципы сильно повлиял на корпоративную культуру, востребованные навыки сотрудников и сами принципы работы в организациях, что привело к масштабным переменам в мире разработки ПО.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

B2B продажи в США. Подводные камни, о которые разбивается большинство

Время на прочтение3 мин
Количество просмотров8.6K
Чтобы продавать бизнесу в США необходимо принять простую вещь. Продажа в США это не набор волшебных слов, бездумного спама и давления. Это очень органичный для обычного американца, но такой непривычный для многих процесс “ построения отношений”.

Построение отношений


— это ключевой момент продажи на рынке B2b. И когда я говорю об отношениях, я имею в виду именно СОЦИАЛЬНУЮ ИНЖЕНЕРИЮ.

image

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

Результатом B2b продажи станет
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии8

PostgreSQL Antipatterns: редкая запись долетит до середины JOIN

Время на прочтение3 мин
Количество просмотров18K
Если писать SQL-запросы без анализа алгоритма, который они должны реализовать, ни к чему хорошему с точки зрения производительности это обычно не приводит.

Такие запросы любят «кушать» процессорное время и активно почитывать данные практически на ровном месте. Причем, это вовсе не обязательно какие-то сложные запросы, наоборот — чем проще он написан, тем больше шансов получить проблемы. А уж если в дело вступает оператор JOIN…


Само по себе соединение таблиц не вредно и не полезно — это просто инструмент, но и пользоваться им надо уметь.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии25

PostgreSQL Antipatterns: «Должен остаться только один!»

Время на прочтение3 мин
Количество просмотров14K
На SQL вы описываете «что» хотите получить, а не «как» это должно исполняться. Поэтому проблема разработки SQL-запросов в стиле «как слышится, так и пишется» занимает свое почетное место, наряду с особенностями вычисления условий в SQL.

Сегодня на предельно простых примерах посмотрим, к чему это может приводить в контексте использования GROUP/DISTINCT и LIMIT вместе с ними.

Вот если вы написали в запросе «сначала соедини эти таблички, а потом выкинь все дубли, должен остаться только один экземпляр по каждому ключу» — именно так и будет работать, даже если соединение вовсе не было нужно.

И иногда везет и это «просто работает», иногда — неприятно сказывается на производительности, а иногда дает абсолютно неожидаемые с точки зрения разработчика эффекты.


Ну, может, не настолько зрелищные, но…

«Сладкая парочка»: JOIN + DISTINCT


SELECT DISTINCT
  X.*
FROM
  X
JOIN
  Y
    ON Y.fk = X.pk
WHERE
  Y.bool_condition;

Как бы понятно, что хотели отобрать такие записи X, для которых в Y есть связанные с выполняющимся условием. Написали запрос через JOIN — получили какие-то значения pk по несколько раз (ровно сколько подходящих записей в Y оказалось). Как убрать? Конечно DISTINCT!
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии19

Локальное хранилище или куки? Безопасное хранение JWT на клиенте

Время на прочтение6 мин
Количество просмотров73K
JWT (JSON Web Token) — это замечательный стандарт, основанный на формате JSON, позволяющий создавать токены доступа, обычно используемые для аутентификации в клиент-серверных приложениях. При использовании этих токенов возникает вопрос о том, как безопасно хранить их во фронтенд-части приложения. Этот вопрос нужно решить сразу же после того, как токен сгенерирован на сервере и передан клиентской части приложения.



Материал, перевод которого мы сегодня публикуем, посвящён разбору плюсов и минусов использования локального хранилища браузера (localStorage) и куки-файлов для хранения JWT.
Читать дальше →
Всего голосов 30: ↑24 и ↓6+32
Комментарии20

Психология удалёнки: как не слететь с катушек

Время на прочтение17 мин
Количество просмотров60K
Удалёнка бьёт по мозгам. И это я вам говорю не как те, кто погрузился в неведомо прекрасное состояние в марте, а как человек, который уже пять лет не видел офисную жизнь, не пил сонным кофе из кофемашины и не встревал в беспечный разговор коллег от скуки рабочего дня. Мне уже приходилось слышать, что кому-то «ковидная» удалёнка надоела, кто-то хочет её навсегда, кто-то мечтает поделить рабочую неделю на офис и хоум-офис. Но 5-6 месяцев — короткий период, чтобы понять свой настоящий выбор (да не случится с нами такое ещё раз!). Удалённая работа меняет личность человека, причём вне зависимости от того, живёт он один, с родными или даже друзьями. Мы становимся другими. И это обязательно нужно обсудить.


Упитанный, унылый, наедине с компом — примерно так и проходит удалёнка
Всего голосов 44: ↑42 и ↓2+58
Комментарии96

Как я на карантине работу искал

Время на прочтение7 мин
Количество просмотров60K
Хочу поделиться с сообществом своим недавним опытом поиска работы, сообщить, так сказать, вести с передовой. Несмотря на то, что все написанное – абсолютно субъективно, заметка будет полезна для других IT-шников. Особенно – если они интроверты и редко ходят по собеседованиям.

А еще, полагаю, многим будет любопытно, какая метаморфоза произошла с рынком работы в связи с последними событиями.


Читать дальше →
Всего голосов 90: ↑86 и ↓4+104
Комментарии150

10 инструментов для повышения продуктивности React-девелоперов в 2020 году

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

Давайте обсудим несколько отличных инструментов, которые повышают продуктивность разработчиков React и улучшают качество работы.

Обычно, когда я начинаю новый проект, то использую собственный шаблон для тех инструментов, которые добавил в этот список. Также я работаю и с другими инструментами, вроде Material UI. Я их изучил, создал с их помощью несколько приложений и реализовал пару небольших проектов, после чего решил поделиться результатами.
Читать дальше →
Всего голосов 13: ↑9 и ↓4+10
Комментарии7

Sentry удаленный мониторинг багов в фронтенд приложениях React

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

Мы изучаем использование Sentry с React.



Эта статья является частью серии, начинающейся с сообщения об ошибках Sentry на примере: Часть 1.

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

Отслеживание ошибок в приложении React с помощью Sentry

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

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

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

Код аудита: поиск дублей, face detection и аномальные изображения

Время на прочтение9 мин
Количество просмотров5.2K
Хабр, привет! Сегодня я расскажу, как мы делали аудит изображений, используя компьютерное зрение, сверточную нейронную сеть FaceNet, а также про кластеризацию гистограмм с целью поиска аномальных изображений.

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

Повышаем квалификацию с лучшими инструментами для web-разработки на React

Время на прочтение6 мин
Количество просмотров19K
Вы можете стать более ценным специалистом, изучив лучшие инструменты для разработки веб-приложений на React.



Большинство резюме работодатель отклоняет, просто пробежав их по диагонали. Это немного обескураживает, правда? Так что очень важно, чтобы он сразу увидел нужные ему знания и навыки у вас. Сейчас подходящее время прокачаться, особенно если вам нечем похвастаться в своём резюме. Не нужно посещать университет, чтобы получить новые навыки: нужно просто идти в нужном направлении и не отклоняться от него.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+28
Комментарии6

Как клеить по 13 девушек в час, используя машинное обучение и Tinder

Время на прочтение7 мин
Количество просмотров151K
*Исключительно ради изучения Machine Learning, разумеется. Под немного недовольным взглядом любимой жены.

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

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


Читать дальше →
Всего голосов 110: ↑102 и ↓8+136
Комментарии139

PostgreSQL Antipatterns: накручиваем себе проблемы

Время на прочтение5 мин
Количество просмотров13K
Некоторые ситуации в работе PostgreSQL кажутся неочевидными, пока не попытаешься детально понять, «почему это работает так». Из-за незнания таких особенностей иногда разработчик сам провоцирует проблемы для нормальной работы своего приложения в будущем.

Сегодня разберем пару примеров, как неудачная организация БД и кода могут превратить наше приложение в клубок проблем:

  • накрутка serial при ON CONFLICT
  • накрутка счетчика транзакций

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

Платный доступ к статьям

Время на прочтение8 мин
Количество просмотров7.5K
Я, MagisterLudi, сейчас делаю проект «Ontol» (прототип, канал @ontol), цель которого собрать в одном месте самые полезные и ключевые тексты всех времен и народов, которые формируют актуальную картину мира по каждой важной области жизни, с бесплатным доступом в 1 клик.

Хочу поделиться переводом статьи от 5 июня 2020 "Problems With Paywalls", сейчас на ее месте стоит заглушка со словами: «NYT угрожает раскрыть моё имя, поэтому я удаляю блог. Вот мои объяснения».


Problems With Paywalls


Часть I


Я ненавижу платные подписки. Категорически их не перевариваю.

Типичный аргумент в пользу бизнеса: компании могут либо сделать вашу жизнь лучше (предоставляя вам любимые продукты) либо никак на нее не повлиять (предлагая продукты, которые вам не нравятся, и вы ими не пользуетесь). Но навредить они вам точно не могут. Хотя есть парочка исключений. Например, если они вытесняют или уничтожают любимую компанию, или их деятельность все-таки вызывает какие-либо побочные эффекты, или они лоббируют правительство, во имя собственной выгоды. Но в целом, если некий бизнес вас раздражает, вы должны понять, как работает одно из этих необычных условий. В противном случае, “компании просто не приносят пользы, какой вам хотелось бы”, не причиняя при этом никакого вреда.

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

Но мой внутренний голос говорит, что все не так. Я уверен, что был бы гораздо счастливее, живя в мире, в котором нет крупных изданий, нежели обитал в мире, где есть газеты, требующие плату за свой материал. Задумайтесь на секунду, чувствуете ли вы то же самое. Если да, что же тогда происходит?
Читать дальше →
Всего голосов 16: ↑11 и ↓5+14
Комментарии24

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

Время на прочтение10 мин
Количество просмотров23K
Автор статьи, перевод которой мы публикуем, предлагает прекратить писать собственный код для аутентификации пользователей. Он полагает, что пришло время внедрять более безопасные решения, которые, если даже не говорить о других их плюсах, позволяют экономить время и деньги.

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



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

Разработка безопасной системы аутентификации пользователей — это по-настоящему сложная задача. Она гораздо масштабнее, чем многие думают. Эту задачу очень легко решить неправильно. Хуже того: ошибки при создании подсистем аутентификации могут повлечь за собой катастрофические последствия. В базовую структуру систем аутентификации и управления пользователями входит всего несколько форм. Из-за этого создание подобных систем может показаться весьма простым делом. Но, как известно, дьявол кроется в деталях. Нужно немало потрудиться для того чтобы сделать такие системы безопасными (и, когда это возможно или даже необходимо, учесть в них требования конфиденциальности персональных данных).
Читать дальше →
Всего голосов 29: ↑23 и ↓6+31
Комментарии78

Нагрузочное тестирование производительности вашего сайта

Время на прочтение5 мин
Количество просмотров9.6K
И снова здравствуйте. В июле Otus запускает новый курс «Нагрузочное тестирование». В преддверии старта курса традиционно делимся с вами полезным материалом.




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

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

Для тех из вас, кто ищет ответы на вопросы о том, как тестировать производительность вашего сайта, чтобы правильно подготовиться к предстоящим неделям, вот 8 советов, которые мы вынесли из работы с нашими клиентами по нагрузочному тестированию за последние 10 лет.
Читать дальше →
Всего голосов 5: ↑4 и ↓1+4
Комментарии0

Полезные трюки PostgreSQL

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


В мануале есть всё. Но чтобы его целиком прочитать и осознать, можно потратить годы. Поэтому один из самых эффективных методов обучения новым возможностям Postgres — это посмотреть, как делают коллеги. На конкретных примерах. Эта статья может быть интересна тем, кто хочет глубже использовать возможности postgres или рассматривает переход на эту СУБД.
Читать дальше →
Всего голосов 55: ↑55 и ↓0+55
Комментарии28

Как думать на SQL?

Время на прочтение8 мин
Количество просмотров608K
Надо “SELECT * WHERE a=b FROM c” или “SELECT WHERE a=b FROM c ON *” ?

Если вы похожи на меня, то согласитесь: SQL — это одна из тех штук, которые на первый взгляд кажутся легкими (читается как будто по-английски!), но почему-то приходится гуглить каждый простой запрос, чтобы найти правильный синтаксис.


А потом начинаются джойны, агрегирование, подзапросы, и получается совсем белиберда. Вроде такой:


SELECT members.firstname || ' ' || members.lastname
AS "Full Name"
FROM borrowings
INNER JOIN members
ON members.memberid=borrowings.memberid
INNER JOIN books
ON books.bookid=borrowings.bookid
WHERE borrowings.bookid IN (SELECT bookid
  FROM books
  WHERE stock>(SELECT avg(stock)
    FROM books))
GROUP BY members.firstname, members.lastname;

Буэ! Такое спугнет любого новичка, или даже разработчика среднего уровня, если он видит SQL впервые. Но не все так плохо.


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

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

Производственный календарь своими руками в Postgresql

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

Здравствуйте, меня зовут Виктор и я разработчик в компании Gems Development. Я хочу рассказать, как мы реализовывали создание и заполнение производственного календаря в Postgresql.

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

После проведения анализа задачи мы пришли к выводу, что в календаре достаточно хранить выходные и праздничные дни, т.к именно они представляют сложность для расчетов и могут меняться в соответствии с производственным календарем в каждом году.
Читать дальше →
Всего голосов 7: ↑4 и ↓3+5
Комментарии12

Информация

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