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

Google Web Toolkit *

Свободный Java-фреймворк для Ajax-приложений

Сначала показывать
Порог рейтинга
Уровень сложности

Создание Framework для Go: Вдохновение от Laravel

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

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

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

Новости

Infinite scroll (бесконечный скролл) +Virtualization (виртуализация) на примере ReactJS+ RTK Query

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

На сегодняшний день любое уважающее себя предприятие, будь то магазин строительных товаров или компания по предоставлению услуг в сфере бизнеса, все они стремятся «выложить» свои товары и услуги в интернет. Это и понятно – мы живем в век бурно развивающихся технологий и доступ в интернет имеет более 65% населения мира (около 5.3 млрд. человек), а к 2025 году это число увеличится до 6.54 млрд. (внушительно, не правда ли?). Так, о чем я, всех их нужно обслуживать, всем им нужно предлагать услуги, товары и т.д. Как говорится: «На вкус и цвет – товарища нет» и правда сколько людей – столько мнений, а в нашем случае товаров и услуг. На фоне этого возникает резонный вопрос: «А как все это отобразить у меня на сайте, чтобы пользователь не ждал до следующего года загрузки страницы сайта, когда к тому времени успеют появиться еще товары, которые необходимо будет подгрузить?». При такой картине мира и самых оптимистичных прогнозах о темпах появления новых вещей, мы имеем неосторожность войти в некую рекурсию.

С детства нас учили есть маленькими порциями и тщательно пережевывать, так почему бы и в сложившейся ситуации получать всю информацию не одним скопом, а порционно? Именно такое решение предлагаю рассмотреть в своей статье. И если уж касаться темы еды (видимо, не стоит писать на голодный желудок), то стоит проглатывать еду, которую мы уже прожевали, а не копить ее во рту, иначе когда-нибудь он порвется (Джокер, к тебе претензий нет).  Так и мы будем удалять элементы из DOM-дерева, которые не доступны взору пользователя, чтобы не перегружать наш сайт.

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

10 советов как повысить продуктивность, используя инструменты разработчика Chrome

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

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

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

Современное SEO: качество страниц

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

В конце мая с. г. в Google сообщили, что теперь они намерены в алгоритм ранжирования сайтов ввести понятие "качества страницы" (page experience). А в понятие качества страницы они включили: скорость загрузки страницы, интерактивность (т.е. например, чтобы кнопка быстро приобретала способность нажиматься), и стабильность контента во время загрузки (т.е. вы не должны случайно нажимать кнопки или ссылки из-за того что всё на экране прыгает пока страница грузится). Кроме того страница должна быть оптимизирована для мобильных устройств (mobile friendly), безопасна для просмотра, передаваться по протоколу https (не http), и не иметь навязчивой рекламы между страницами (intrusive interstitials).

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

Истории

Современное SEO: AMP-истории

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

Да, вот такой гибридный, русско-английский заголовок получился… Поэтому давайте сразу кое-что проясним. Итак, если SEO широко известный (в узких кругах) термин, то AMP — ещё не столь. Accelerated Mobile Pages был анонсирован Google в 2015 г. (см. статью в Википедии), как инструмент, позволяющий быстро просматривать веб-страницы на мобильных телефонах. Со временем AMP превратился в фреймворк, позволяющий создавать страницы для любых сайтов (не только для мобильных устройств), и расширил свою «номенклатуру»: собственно сайты (AMP Websites), истории (AMP Stories; тема этой статьи), рекламные блоки (AMP Ads), и электронные письма (AMP email). За всем этим, как было сказано выше, стоит Google, и если вас интересует продвижение сайтов в этой поисковой машине — полезно будет отнестись к теме AMP с должным вниманием. Но давайте сначала посмотрим как выглядят эти самые AMP-истории (UPD: с 1 мая 2020 AMP Stories переименованы в Web Stories, поэтому теперь по-русски их лучше называть Веб-истории), затем решим нужны ли они нам, и, если окажется, что нужны — рассмотрим как это сделать.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+6
Комментарии9

WebRTC через Kurento: опыт тестирования и внедрения

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

В этой статье я поделюсь опытом работы с технологией WebRTC и медиасервером Kurento на этапе тестирования и внедрения. Расскажу с какими проблемами я столкнулся и как их решил. Я не расскажу о том как разработать приложение с нуля, но приведу много полезных ссылок. Уверен, что мой рассказ будет полезен тем, кто собирается работать с WebRTC.
Читать дальше →
Всего голосов 10: ↑8 и ↓2+11
Комментарии17

Визуализации в Google Spreadsheets

Время на прочтение2 мин
Количество просмотров9.5K
С момента появления Excel стал самым популярным и универсальным инструментом автоматизации расчетов для непрограммистов и полупрограммистов (таких, как я). В свое время я много всякого писал на VBA, делал в студенчестве скрипты для оформления курсовых, даже запилил для диссертации мощный итерационный расчет распространения тепла в твердом топливе во время горения, который минут на 20 парализовывал комп. Сегодня в эпоху облаков и веб-решений эту нишу захватывают Google Sheets.

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

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

J2CL — Лучше поздно, чем никогда

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

Ещё никому не удалось опоздать на свои похороны.
Валентин Домиль


На прошлой неделе команда из Google наконец-то выложила исходники фреймворка J2CL, о котором говорили с 2015 года. Идея трансляции Java в JavaScript далеко не нова, и все уже давно набили шишек с Google Web Toolkit, однако этот продукт сообщество ждало как ни один другой — о нем говорили и делали выступления, но никто его не видел.



    ‌‌‍‍
Прошло больше 3-х лет с первого анонса и, кажется, что продукт потерял рынок даже не родившись. Сегодня у нас есть Scala.js, Kotlin.js и JSweet, не говоря уже о том, что веб-разработка захвачена TypeScript и для Java не осталось места. За такое время многие, даже самые преданные джависты, утратили веру в “Java для Front-end” и обуздали тот или иной JavaScript фреймворк.


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

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии44

Vaadin Flow — диковинный олень

Время на прочтение9 мин
Количество просмотров21K
Всякая перемена, даже перемена к лучшему,
всегда сопряжена с неудобствами

Ричард Хукер

Как вы возможно знаете, Vaadin — один из самых популярных web-фреймворков на Java:


Совсем недавно вышел новый релиз этого фреймворка для разработки web UI — Vaadin 10. Про Vaadin 10 и Vaadin Flow пока довольно мало публикаций на русском, и этот пост призван восполнить этот пробел.


Создатели позиционируют Vaadin Flow как новый Java web-фреймворк для разработки современных web-приложений и web-сайтов (вот тут я им не совсем верю). Это часть Vaadin Platform, которая приходит на замену другому продукту — Vaadin Framework, она позволяет разрабатывать web-приложения (а если быть точным, то web UI) с применением стандарта Web Components на Java.

Тут у читателя в голове скорее всего всё уже смешалось, все эти Vaadin Bla Bla, фреймворк, платформа и прочее. Что происходит?

Мы используем Vaadin в составе своей платформы CUBA для UI back-office систем на протяжении 7 лет и за это время накопили большой опыт работы с ним, поэтому нас не может не волновать его судьба. Под катом вы найдёте мои спекуляции на тему Vaadin 10.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии8

За год Google проанализировал 760 тыс. взломов сайтов и анонсировал новый инструмент оповещения веб-мастеров

Время на прочтение2 мин
Количество просмотров15K
За время исследования, проводимого с июля 2014 по июнь 2015 года, работниками компании Google было выявлено 760 935 фактов взлома 313 190 сайтов, которые компания определила как потенциально опасные для пользователя, о чем говорится в соответствующем докладе. Собранная статистика была использована для разработки новой системы уведомлений для веб-мастеров, которая будет информировать последних о взломе сайта.

Разработка была представлена на 25-м Международном World Wide Web-консорциуме, там же, где другие работники Google анонсировали свой черновик протокола передачи данных между веб-страницами и USB-устройствами.

image
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии5

Google отказывается от Flash в рекламе

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


Последние несколько лет HTML5 все больше вытесняет FLASH.

На днях Google анонсировал, что полностью откажется от показа рекламы на Flash, в пользу HTML5 в самом ближайшем времени.
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии7

Brotli — новый алгоритм сжатия веб-данных от Google

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

Так как веб-сайты и онлайн-сервисы с каждым годом становятся все «тяжелее», возрастает необходимость и сжатия данных в вебе. По этой причине Google выпустил новый алгоритм сжатия данных для веб-сайтов — Brotli, что в переводе с швейцарского немецкого означает «маленькая булка хлеба». Алгоритм уже доступен широкой аудитории на GitHub.
Читать дальше →
Всего голосов 36: ↑24 и ↓12+12
Комментарии12

Пишем и отлаживаем компонент для GWT и Vaadin

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


Фреймворки Google Web Toolkit и Vaadin достаточно хорошо себя показывают, когда вы просто используете их. Если вдруг вам понадобилось расширить их функциональность, то вам придётся серьёзно попотеть. В этой статье я хочу рассказать, как написать простой компонент на GWT, добавить к нему серверную часть Vaadin и использовать в своём приложении. Я не буду создавать некий совсем пустой GWT/Vaadin проект и с самого начала настраивать компиляцию GWT, вместо этого возьму приложение на базе CUBA.Platform, в котором и реализую сам компонент, а затем попробую в деле. Так будет видно, насколько хорошо всё впишется в настоящее приложение. Отдельное внимание я бы хотел уделить отладке компонента, поскольку она нетривиальна и всегда вызывает трудности у разработчиков.

Хочу предупредить, что не всё описанное в статье относится к GWT и Vaadin, часть шагов и приёмов применимы только в контексте использования CUBA.Platform, за счёт этого сильно упрощена настройка окружения и некоторые рутинные действия.
Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии9

Ближайшие события

Запуск GWT Super Dev Mode для удаленного сервера

Время на прочтение5 мин
Количество просмотров15K
Наше JEE приложение сделало скачок версии GWT с 1.7 сразу до 2.6.1. Когда-то были небольшие танцы с бубном для того, чтобы в среде разработки IntelliJ Idea настроить возможность отладки клиентской части. Отладка заключается в возможности ставить точки останова (breakpoint-ы) в Java-коде, но попадать в них из браузерного JavaScript-а, сгенерированного GWT из Java-кода. После обновления версии GWT старая конфигурация запуска отладки работать перестала, и мне пришлось познакомиться с GWT Super Dev Mode (SDM). После этого «знакомства» я понял, что выше упомянутые «танцы» были на самом деле предельно простой и понятной настройкой, по крайней мере, в сравнении с SDM. Надеюсь, кому-то эта статья очень поможет сэкономить пару-тройку дней блужданий по форумам и избавит от нескольких новых седых волос. В статье я расскажу про опыт запуска режима SDM в следующем окружении: IntelliJ Idea 14, JBoss EAP 6, GWT 2.6.1 с применением в проекте GWT RPC, браузер Chrome. Несмотря на то, что при релизе Idea 14 сообщили о доработках касательно отладки в GWT, думаю, что для версии 13 всё нижеописанное также применимо. Используемый сервер приложений также вряд ли как-то влияет на настройку SDM. Насчет версий GWT: для 2.6.0 применимо почти один-в-один, то же касается и 2.7.0 (сам не проверял, вычитал в Сети по ходу проведения исследований).
Читать дальше →
Всего голосов 26: ↑20 и ↓6+14
Комментарии2

GWT, Java 8 и Future

Время на прочтение6 мин
Количество просмотров21K
Добрый день.
Думаю, многие из вас знают о выходе Java 8, и о том, какие нововведения она несет. К сожалению, последняя версия GWT(2.6.0) на данный момент до сих пор не поддерживает лямбды и default-методы в интерфейсах. Поскольку фреймворк GWT довольно востребован, многим приходится часто сталкиваться с разработкой именно на нем, мне не терпелось попробовать писать на GWT с использованием вновь добавленных в язык фич.
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии7

Коран по поискам дублей в Google Spreadsheet

Время на прочтение9 мин
Количество просмотров45K
Доброго времени суток, дорогие читатели.

Помните ли вы овцу Долли? При работе с документами google, особенно со spreadsheet (MS Excel) таблицами для решения многих нетипичных задач, таких как: специальное форматирование по множеству условий или удаление дубликатов, необходимо было научится пользоваться JavaScript, так как не все можно исполнить с помощью стандартных функций, а по формулам есть ограничения, которые раскроем в следующем выпуске. Теперь же представляем ликбез по поиску дублей ссылок и текста в Google Spreadsheet.

image

Поэтому начнем писать скрипты для Google Spreadsheet. Если вы знаете несколько языков программирования хотя бы поверхностно, вам, конечно, будет легче. На JavaScript я начал писать без проблем, но работал в основном с VBA, Visual basic, C/C++, C#. Как говорится, всего понемногу и везде по чуть-чуть. Ежели знания языков программирования хромают, то добро пожаловать на наш ликбез.

Читать дальше →
Всего голосов 14: ↑6 и ↓8-2
Комментарии6

GWT-Platform основы работы с презентерами

Время на прочтение12 мин
Количество просмотров17K
Всем хабражителям доброго времени суток!

Я начинающий Java-программист и так уж получилось, что свою карьеру я начинаю с разработки серьезного приложения на GWT. На хабре довольно много статей на тему GWT, однако почему-то совсем нет информации о замечательном фреймворке GWT-Platform. Подробно познакомиться с данным фреймворком можно тут, а я расскажу вкратце об основах работы на примере простого приложения.
Читать дальше →
Всего голосов 8: ↑6 и ↓2+4
Комментарии2

GWT – подглядываем в передаваемые данные

Время на прочтение5 мин
Количество просмотров8K
imageGWT – отличный фреймворк. Я — Java-разработчик, и мне доводилось работать с тонкими клиентами с использованием JSP, JSF и GWT. Про JSP говорить особо нечего, технология сейчас практически вымерла, а вот в JSF-е пришлось повариться пару лет на двух проектах, и впечатления, мягко говоря, не из лучших: мешанина JSTL, HTML, JavaScript и прочего доставляет несказанное “удовольствие”, доходящее до экстаза в моменты разбора непонятного поведения какой-нибудь сложной страницы. Да, в примерах все выглядит аккуратно и просто, но реальная жизнь не такая, и JSF-страницы проекта даже среднего размера и, вроде бы, с грамотным неторопливым подходом при проектировании, с использованием шаблонов, все равно начинает “попахивать”, особенно в части читабельности. В GWT все достаточно аккуратно, ведь пишем на родном языке Java, пусть и в урезанном варианте, но того что есть более чем достаточно.
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии13

Сериализация GWT RPC в запрашиваемую страницу для индексирования приложения поисковиками и ускорения загрузки

Время на прочтение6 мин
Количество просмотров7.8K
Как известно, поисковики не очень любят динамически создаваемые страницы, а страница (приложение) GWT как раз является динамической.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии4

GWT + Hibernate + Dispatch

Время на прочтение5 мин
Количество просмотров11K
При создании портала крайне часто основной функцией BackEnd является работа с БД. Как правило сейчас никто не использует обычные и не очень удобные для написания Statement’ы, а в место этого используют ORM фреймворки. В случае с GWT этим фреймворком скорее всего становится Hibernate, так как на сервере у нас Java. Мне далеко не первому пришла в голову мысль о том, что крайне удобно и просто было бы передавать не отдельные данные а целиком POJO(персистентные объекты) используемые Hibernate. Вот я создал свой сервис, возвращающий на клиентскую часть POJO. POJO пронаследовал от Serializable. Запускаю приложение и получаю вот такое вот исключение:

Caused by: com.google.gwt.user.client.rpc.SerializationException: Type 'org.hibernate.collection.PersistentSet' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.
at com.google.gwt.user.server.rpc.impl.StandardSerializationPolicy.validateSerialize(StandardSerializationPolicy.java:83)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:591


Не сразу понятно что пошло не так. Дело в том, что как только объект становится персистентным, в нем происходит ряд изменений, необходимых для работы Hibernate. Например обычные Set меняются на PersistentSet. Из-за этого браузер уже никак не может десериализовать отправленный ему объект, ни при каких условиях.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии8
1