Мой коллега уже писалЧитать полностью »
Рубрика «java» - 17
Чаты на вебсокетах, когда на бэкенде WAMP. Теперь про Android
2021-01-13 в 18:01, admin, рубрики: android, backend, java, kotlin, wamp, андройд, Блог компании FunCorp, бэкенд, клиент-сервер, мобильная разработка, протокол, разработка мобильных приложений, Разработка под android, чат, чатыГибриды побеждают или холивары дорого
2021-01-10 в 23:05, admin, рубрики: Apache, C#, devops, docker-compose, java, kafkaconnect, RabbitMQ, высокая производительностьМотивом для написания данной статьи послужил тот факт, что на habr.com участилось появление материалов маркетингового характера про Apache Kafka. А также тот факт, что из статей складывается впечатление что пишут их немного далекие от реального использования люди — это конечно же только впечатление, но почему-то в большинстве своем статьи обязательно содержат сравнение Apache Kafka с RabbitMQ, причем не в пользу последнего. Что самое интересное — читая подобные статьи управленцы без технического бэкграунда начинают тратить деньги на внутренние исследования, чтобы ведущие разработчики и технические директора выбрали одно из решений. Так как я очень жадный/домовитый, а также так как я сторонник тезиса "В споре НЕ рождается истина" предлагаю вам ознакомится с другим подходом — почти без сравнения разных брокеров.
Документирование API в Java приложении с помощью Swagger и OpenAPI 3.0
2021-01-07 в 14:37, admin, рубрики: api, java, rest, spring, swagger, документированиеВеб-приложение часто содержит API для взаимодействия с ним. Документирование API позволит клиентам быстрее понять, как использовать ваши сервисы. Если API закрыт от внешнего мира, то все равно стоит уделить время спецификации — это поможет вашим новым коллегам быстрее разобраться с системой.
Создание документации вручную — утомительный процесс. Swagger поможет вам упростить эту работу.
Асинхронное выполнение задач с использованием Redis и Spring Boot
2021-01-02 в 13:17, admin, рубрики: asynchronous task, java, redis, spring, spring bootВ этой статье мы рассмотрим, как использовать Spring Boot 2.x и Redis для выполнения асинхронных задач, а полный код продемонстрирует шаги, описанные в этом посте.
Spring/Spring Boot
Spring — самый популярный фреймворк для разработки Java приложений. Таким образом, Spring имеет одно из крупнейших сообществ с открытым исходным кодом. Кроме того, Spring предоставляет обширную и актуальную документацию, которая охватывает внутреннюю работу фреймворка и примеры проектов в своем блоге, а на StackOverflow более 100 тысяч вопросов и ответов.
Пять причин, по которым следует использовать Apache Wicket
2021-01-01 в 15:55, admin, рубрики: apache wicket, java, web-разработка, webframeworks, wicket, веб-сайт, Программирование, Разработка веб-сайтовApache Wicket - это фреймворк для веб-разработки на Java. Я чувствую, что ему не уделяют столько внимания, сколько он того заслуживает. Я профессионально использую Wicket для реальных проектов последние 6 лет и мне это нравится! В этом посте давайте рассмотрим пять причин, по которым вам стоит подумать об его использовании.
1. Простое управление состоянием
Мы отрендерили миллион страниц, чтобы понять, из-за чего тормозит веб
2020-12-30 в 9:17, admin, рубрики: java, Анализ и проектирование систем, высокая производительность, данные, производительность, Тестирование IT-систем, Тестирование веб-сервисовМы отрендерили 1 миллион самых популярных страниц веба, фиксируя все мыслимые метрики производительности, записывая все ошибки и замечая все запрошенные URL. Похоже, таким образом мы создали первый в мире набор данных, связывающий производительность, ошибки и использование библиотек в сети. В этой статье мы проанализируем, что наши данные могут сообщить о создании высокопроизводительных веб-сайтов.
- Посещён 1 миллион страниц
- Записано по 65 метрик каждой страницы
- Запрошен 21 миллион URL
- Зафиксировано 383 тысячи ошибок
- Сохранено 88 миллионов глобальных переменных
Можно ли превзойти наш анализ? Мы опубликовали наш набор данных на Kaggle, поэтому вы можете обработать данные самостоятельно.
Зачем рендерить миллион веб-страниц?
Сегодня распространено мнение о том, что веб почему-то стал более медленным и забагованным, чем 15 лет назад. Из-за постоянно растущей кучи JavaScript, фреймворков, веб-шрифтов и полифилов, мы съели все преимущества, которые даёт нам увеличение возможностей компьютеров, сетей и протоколов. По крайней мере, так утверждает молва. Мы хотели проверить, правда ли это на самом деле, а также найти общие факторы, которые становятся причиной торможения и поломок сайтов в 2020 году.
Общий план был простым: написать скрипт для веб-браузера, заставить его рендерить корневую страницу миллиона самых популярных доменов и зафиксировать все мыслимые метрики: время рендеринга, количество запросов, перерисовку, ошибки JavaScript, используемые библиотеки и т.п. Имея на руках все эти данные, мы могли бы начать задаваться вопросами о том, как один фактор корреллирует с другим. Какие факторы сильнее всего влияют на замедление рендеринга? Какие библиотеки увеличивают время до момента возможности взаимодействия со страницей (time-to-interactive)? Какие ошибки встречаются наиболее часто, и что их вызывает?
Читать полностью »
Новогодние бенчмарки компьютеров Эльбрус
2020-12-28 в 22:25, admin, рубрики: .net, java, javascript, Lua, php, python, бенчмарки, высокая производительность, Компьютерное железо, ненормальное программирование, Процессоры, ЭльбрусНовогодние бенчмарки компьютеров Эльбрус
Продолжение статьи Большое тестирование процессоров различных архитектур. В этот раз я решил измерить производительность конкретных сред/языков программирования (C#, Java, JavaScript, Python, Lua) на компьютерах с процессорами Эльбрус и сравнить их с компьютерами (даже телефонами) на процессорах архитектурой ARM и X86-64.
Языки программирования:
- C#
- PHP
- JavaScript (Browser, не NodeJS)
- Java
- Python
- Lua
Список тестов
- Dhrystone (http://www.roylongbottom.org.uk/#anchorSource)
- Whetstone (http://www.roylongbottom.org.uk/#anchorSource)
- Scimark 2 (Original sources: https://math.nist.gov/scimark2/download.html)
- Linpack (Based on: https://github.com/fommil/netlib-java/blob/master/perf/src/main/java/com/github/fommil/netlib/Linpack.java)
- Generic:
- Loops
- Conditions
- Arithmetics
- Math
- Array speed
- String manipulation
- Hash algorithms
Но сперва приведу результаты нативных бенчмарков на языке C, а также результаты других популярных бенчмарков.
Технология Serverless: снова привет, 1970-е
2020-12-25 в 8:32, admin, рубрики: devops, java, serverless, smalltalk, XML, микросервисы, Программирование, хостинг
Я проработал с «Облаком» уже достаточно долго для того, чтобы убедиться, что ему предстоит пройти ещё долгий путь, прежде чем оно станет лучше старой доброй аренды пары серверов и запуска своего ПО на них. Сейчас в моде Serverless-решения, из-за которых у меня ощущение, что мы снова вернулись в 1970 год.
Когда-то давным-давно я притворялся, что учусь менеджменту, а на самом деле изучал кодинг на C. Наш университет находился в двух мирах: в нём существовала лаборатория с «персональными компьютерами», но в то же время имелись терминалы мини-компьютера, и в зависимости от предпочтений профессоров задания нужно было выполнять в одном из этих миров. Но обе эти системы были, по крайней мере, интерактивными и обеспечивали мгновенную обратную связь. Моему другу повезло не так сильно: на одном из курсов по технологии строительства ему дали задание, которое нужно было выполнить на Pascal и сдать в виде распечатки с университетского мейнфрейма.
Читать полностью »
Не баян: ищем дубликаты изображений на основе Milvus с индексом FAISS внутри
2020-12-22 в 14:32, admin, рубрики: faiss, github, java, kotlin, Milvus, open source, python, Блог компании FunCorp, вектор, дубликаты изображений, картинки, мобильная разработка, поиск, поисковые технологии, разработка, разработка мобильных приложений
В user-generated проектах часто приходится бороться с дубликатами, а для нас это особенно актуально, так как основной контент мобильного приложения iFunny — это изображения, которые постятся десятками тысяч ежедневно. Для поиска повторов мы написали отдельную систему, чтобы облегчить процесс и сэкономить море времени.
Под катом рассмотрим используемые инструменты, а потом перейдём к примеру реализации.
Читать полностью »
Генератор неслучайных чисел
2020-12-22 в 5:30, admin, рубрики: java, lcg, Алгоритмы, линейный конгруэнтный метод, математика, оптимизация алгоритмов, Серверная оптимизация, Статистика в ITЭтот код напечатает случайную последовательность латинских букв, так ведь?
import java.util.Random;
class WTF {
public static void main(String[] args) {
Random r = new Random(76880392499L<<11);
String alphabet = " abcdefghijklmnopqrstuvwxyz";
int n;
while ((n = r.nextInt(alphabet.length())) > 0)
System.out.print(alphabet.charAt(n));
}
}
Можете проверить; вывод кажется совсем не случайным. Как же так вышло?
Прежде всего: какой шанс, что из всех последовательностей латинских букв напечатается именно эта? Сгенерировано 10 случайных чисел, каждое выбиралось из 27 вариантов, значит всего вариантов было $inline$27^{10} approx 2.06cdot10^{14}$inline$. Если считать, что все варианты равновероятны, то нам выпал один шанс из двухста миллионов миллионов! Ух!Читать полностью »