Search
Write a publication
Pull to refresh
2
0
Send message

О трудном и утомительном пути от идеи до веб-сайта

Level of difficultyEasy
Reading time6 min
Views3.3K

2017 год. Я уже около шести лет работаю в компании, продающей кубики Рубика, и начинаю испытывать зуд от желания попробовать что-то новое. Несколько лет проработав с физическими товарами, я осознал, что всегда хотел работать в полностью онлайновом и виртуальном бизнесе, в котором не придётся иметь дело с материальными продуктами (и не испытывать связанной с ними головной боли).
Читать дальше →

Перевод: Захват аккаунта: Эпическая история баг-баунти

Level of difficultyEasy
Reading time6 min
Views2.4K

Здравствуйте, друзья! Я вернулся после долгого перерыва с интересной ошибкой Account Takeover и тем, как я связал ее с XSS. Вы можете запутаться, поскольку это длинная статья, но не волнуйтесь, дочитайте до конца; в конце я все упростил для лучшего понимания.

Читать далее

Оптимизация при работе с MySQL — экономия на спичках или с миру по нитке?

Level of difficultyMedium
Reading time7 min
Views4.2K

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

Читать далее

Тестирование UI в JavaScript – наилучшие практики

Reading time9 min
Views9.6K
image
Это руководство по наилучшим практикам в тестировании UI на JavaScript, от разработки через поведение (BDD) до соглашений об именовании и до того, какие именно операции браузер должен выполнять в рамках тестов.

От качества UI (пользовательского интерфейса) зависит, состоится приложение или развалится. Для вас принципиально, какое первое впечатление пользователь получит от приложения, так как второго шанса у вас может и не быть. Поэтому важность тестирования UI при разработке приложений только растёт. В процессе тестирования UI проверяются те аспекты работы программы, с которыми придётся непосредственно иметь дело пользователю. Но какими методами и приёмами нужно пользоваться, чтобы добиться максимальной эффективности тестирования? В этой статье мы поговорим именно о таких инструментах, использовать которые можно прямо с сегодняшнего дня. Начнём.

Если вы автоматизируете тесты UI при помощи тестировочного инструмента, то можете:
  • Убедиться, что элементы UI не схлёстываются и не смещены,
  • Проверить, нет ли ошибок в правописании, капитализации или пунктуации,
  • Гарантировать, что шрифт чёткий и хорошо читается, подобрать цвет и кегль шрифта,
  • Проверить выравнивание изображений,
  • Убедиться, что в браузере правильно выводятся сообщения об ошибках,
  • Проверить положение элементов UI при разных разрешениях экрана.

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

Тестируйте API, как профессионал Часть 1

Level of difficultyEasy
Reading time3 min
Views12K

Процесс автоматического тестирования и проверки функциональности программного интерфейса приложения (API) известен как автоматизация API. Она помогает убедиться, что API функционирует так, как задумано, и сокращает время и усилия, затрачиваемые на ручное тестирование.

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

Читать далее

Отображение графа на Python с networkx

Level of difficultyEasy
Reading time6 min
Views37K


Граф — это форма визуализации, позволяющая показывать и анализировать отношения между сущностями. Например, рисунок ниже показывает вклад редакторов Википедии на различных языках энциклопедии в июле 2013 года:



Можно сделать несколько наблюдений:


  • Английский (en) — основной язык, на который переводятся все остальные языки; в то же время многие англоязычные материалы переводятся на другие языки.
  • Китайский (zh) переводится на японский (ja), но не наоборот.
  • И китайский, и японский материалы переведены на английский, и наоборот.

Я же расскажу о том, как для отображения графов использовать пакет networkx.

Читать дальше →

Дао Кодинга (о стиле написания кода)

Level of difficultyMedium
Reading time14 min
Views9.9K

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

Текст написан от первого лица, и я решил сохранить этот момент. Поэтому "я" — это не я, а оригинальный автор статьи "Tao of Coding" — Коэн Уиттерс.

Читать далее

Данное руководство описывает стиль написания программного кода, который я разрабатывал несколько лет. Но стиль мой настолько неизвестен, что я не знаю никого, кто пользовался бы таким странным способом программировать, каким пользуюсь я. Тем не менее, он мне нравится и я бы хотел поделиться этим знанием (эй ты, везунчик, слышишь меня?). Этот стиль я использовал в разных языках: С, С++, Java, C#, Python,... .

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

Читать далее

Цепочка методов в pandas. Прокачиваем свой код. Минигайд для интересующихся

Level of difficultyMedium
Reading time17 min
Views24K

Цепочка методов (или цепочка вызовов, method chaining) - это стиль записи кода, который позволяет выполнять несколько операций за один раз, в конечном счете экономя время и энергию.

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

Читать далее

Как локализовать все ваши iOS приложения на 20 языков за 5 минут

Level of difficultyEasy
Reading time3 min
Views3.6K

Я создал консольный инструмент, который автоматически находит все файлы .strings в проекте xcode и переводит их на все языки.

Читать далее

Технология Li-Fi: безопасный и быстрый способ связи

Level of difficultyEasy
Reading time5 min
Views10K

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

Тык

Встраивание WebGL в HTML-страницу с помощью Three.JS

Level of difficultyHard
Reading time15 min
Views7.3K

demo, github

Приветствую! Я Алексей, frontend‑разработчик в SimbirSoft. Вы, возможно, видели потрясающие веб‑сайты, представленные на www.awwwards.com. Это онлайн‑каталог лучших веб‑сайтов, который оценивает и награждает творческие и инновационные работы веб‑дизайнеров и разработчиков. На этом сайте можно найти множество примеров креативного веб‑дизайна, анимаций и визуальных эффектов. Такие удивительные анимации обычно разрабатываются с использованием WebGL. Эта технология позволяет более свободно и творчески подходить к созданию впечатляющих визуальных эффектов без ущерба для производительности. Для работы с WebGL используются такие библиотеки, как Three.js, PIXIJS или BABYLON, которые также популярны при создании игр.

В данной статье мы рассмотрим совмещение WebGL‑анимации с прокруткой страницы HTML, используя библиотеку Three.js. Работа с ней во многом схожа с работой 3D‑редактора (3ds Max, Maya, Blender и т. д.). Для получения результата в виде картинки или анимации необходимо создать сцену, поместить в нее камеру, создать примитив (геометрию или 3D‑модель), создать источник освещения и запустить процесс рендеринга.

Эта статья будет полезна middle и senior фронтенд‑разработчикам, которые хотят ознакомиться с Three. В статье очень мало теории и вводных материалов, акцент сделан на практической части. Если вы совсем не знаете, как работает Three.js и шейдеры, рекомендую вначале ознакомиться с этой технологией, а после вернуться к статье.

Читать далее

Главное из мира Python за февраль 2023

Reading time3 min
Views5.4K

Раз в месяц мы в Moscow Python Podcast собираемся и обсуждаем новые релизы, PEP, заинтересовавшие нас инструменты и статьи. Под катом — текстовая выжимка из обсуждения.

Читать далее

Неожиданная проблема с макросами (точнее без макросов)

Level of difficultyMedium
Reading time3 min
Views5.6K

image


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


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


Если же говорить о простых реализациях макросов, например как для языков С и С++, то умные люди и умные книжки советуют избегать использования макросов и по возможности заменять их шаблонами, константами и inline-функциями. Ведь с помощью макросов можно не только упростить код, но и не менее изящно стрелять в ноги себе или своих товарищей.


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

Читать дальше →

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

Level of difficultyMedium
Reading time5 min
Views4.8K

Привет!

Меня зовут Петр Коробейников, я техлид команды DBaaS for Redis в #CloudMTS.
Некоторое время назад я озадачился созданием общего набора инструментов для наших команд разработки. Цель была проста: разработчик не тратит время на погружение в логику работы конкретного инструмента, берет готовую инструкцию и просто делает свое дело — пишет код. Типовое окружение поможет переходить ребятам из команды в команду и быстро адаптироваться, а новичку — проще приступить к работе.

Сегодня я хочу рассказать про один из элементов такого типового окружения, который позволяет быстро начать работу с брокерами сообщений. Даже если разработчик Kafka и прочие брокеры до этого в глаза не видел. Речь пойдет о шине данных или событий (EventBus) и про то, как мы настроили ее кодогенерацию.

Читать далее

Как установить и настроить LXD на Ubuntu

Reading time9 min
Views9.5K

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

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

Читать далее

Работа памяти в Python

Level of difficultyEasy
Reading time2 min
Views10K

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

Python не взаимодействует с памятью - только с её виртуальным представлением. В процессе выполнения программы операционная система создаёт процесс и выделяет под него ресурсы. В отличие от С/С++ мы не можем управлять памятью из кучи напрямую, а делаем это посредством memory manager, который и обращается к памяти через Python/C API.

Читать далее

Что такое мнемотехника и как она работает. Как легко запоминать пароли, пин-коды, телефоны и всё важное

Reading time10 min
Views15K

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

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

Читать далее

Kubernetes без Kubelet: рассказываем об инструменте KWOK

Reading time10 min
Views3.4K

Вы когда-нибудь задумывались, как:

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

Если вы ответили «Да» на большинство вопросов, то вам, вероятно, будет интересно узнать о KWOK — инструменте, который позволяет создавать кластер из тысяч узлов.

Читать далее

Чего еще нас лишит нейросеть

Reading time5 min
Views54K

Сначала этот текст должен был стать комментарием к посту GPT-3. Есть проблема побольше, чем потеря рабочих мест, где автор приводит несколько прогнозов, ни один из которых мне не нравится. Нет, прогнозы хорошие, может быть даже сбудутся, но самая главная, как мне видится, опасность – упрощение поиска с помощью нейросетей, там даже не упомянута. А именно она ударит по обществу первой, еще задолго до появления президента-нейросети.

Дальше много букв

Почему сотрудники делают не то, что нужно

Reading time4 min
Views7.2K

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

Читать далее

Information

Rating
6,518-th
Registered
Activity