Pull to refresh

Поддержка RTL интерфейсов в GXT (Ext GWT)

Reading time 3 min
Views 2.4K
ExtJS/Sencha *
Sandbox
Вот уже несколько лет являюсь разработчиком одного корпоративного десктоп приложения для восточных пользователей. Особенностью разработки является необходимость обеспечить поддержку ориентации справа-налево (RTL) в пользовательском интерфейсе.

Недавно встал вопрос о хотя бы частичной миграции функционала в веб. Как средство разработки была выбрана платформа GWT. Выбор обусловлен тем, что наиболее привычной технологией для себя считаю Java. Также очень хотелось попробовать какую-нибудь новую для меня современную платформу разработки.
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 2

BIDI (unicode bidirectional algorithm)

Reading time 5 min
Views 15K
Website development *Algorithms *HTML *
imageМультиязычные сайты — это хорошо, но довольно муторно. И если для самых популярных языков достаточно иметь несколько вариантов текста, то с добавлением RTL (right-to-left) всё становится гораздо хуже. Приходится заводить новый набор стилей с заменой всего правого на левое и наоборот (касается свойств типа float, padding, margin etc), но и это ещё не все. Могут возникнуть ситуации, когда в одном документе соседствуют фразы на языках с разным направлением, здесь и начинает работать bidi. Если это кому-нибудь интересно....
Подробности
Total votes 79: ↑77 and ↓2 +75
Comments 2

Сайты справа налево: как подключить RTL-стандарт

Reading time 4 min
Views 37K
Alconost corporate blog Website development *CSS *
Translation
Когда неподготовленный человек видит сайт на арабском, иврите или любом другом RTL (right-to-left) языке, у него кружится голова: справа налево располагаются не только текст, но и элементы интерфейса.



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

А если в RTL текст нужно вставить слово на латинице, оно пишется как обычно: слева направо. Такой смешанный RTL-LTR текст превращается в отличный тренажер для глаз.
Как же добиться поддержки RTL на сайте?
Total votes 15: ↑12 and ↓3 +9
Comments 13

Арабская локализация: окна и рисование

Reading time 7 min
Views 16K
Content AI corporate blog Development for Windows *
Tutorial
Однажды в очередную версию ABBYY FineReader Sprint (программа для распознавания текста, которая поставляется вместе с МФУ и сканерами) потребовалось добавить арабский язык интерфейса. И все заверте…

Обычно локализация на «новый» язык – дело (для разработки) нехитрое: завести константу-другую, поднастроить билдовую систему, и, в общем-то, все. Остальное ложится на плечи техписов и переводчиков. Но в арабском пишут справа налево, а это влечет за собой множество изменений и в интерфейсе. Об этом опыте я и расскажу в статье.
Читать дальше →
Total votes 49: ↑47 and ↓2 +45
Comments 15

Арабская локализация: слова, слова, слова

Reading time 7 min
Views 20K
Content AI corporate blog Development for Windows *
Tutorial


Эта вторая часть рассказа про локализацию ABBYY FineReader Sprint на арабский. В отличие от первой части, где собственно про язык было мало, а про окна много, здесь речь пойдет уже про письменность и ее особенности.
Читать дальше →
Total votes 41: ↑41 and ↓0 +41
Comments 14

Как писать софт для всего мира

Reading time 5 min
Views 13K
Alconost corporate blog Language localisation *Development Management *
Tutorial
Translation
Среди софтверных разработчиков всегда было принято считать, что локализация — это очень дорогое и отнимающее уйму времени занятие, поэтому всегда лучше сначала ограничиться одним языком, а поддержку других добавить позже по мере необходимости. Из-за такого отношения никто чаще всего не задумывается о поддержке многоязычности на ранних стадиях разработки нового софта, и многие продукты в итоге делаются таким образом, что локализовать их потом гораздо сложнее, чем должно быть.



На самом деле в написании софта, который впоследствии легко локализуется, нет ничего ужасно сложного, если вы начинаете писать с учетом конечного результата. Мы в Alconost перевели для вас статью о техниках, помогающих серьезно сократить себе количество работы в тот момент, когда ваш продукт все же станет международным.
Читать дальше →
Total votes 17: ↑12 and ↓5 +7
Comments 8

Генераторы хаоса на FPGA

Reading time 8 min
Views 33K
Open source *Algorithms *Mathematics *FPGA *Programming microcontrollers *
Всем привет!

Эта статья посвящается удивительным особенностям в мире хаоса. Я постараюсь рассказать о том, как обуздать такую странную и сложную вещь, как хаотический процесс и научиться создавать собственные простейшие генераторы хаоса. Вместе с вами мы пройдем путь от сухой теории до прекрасной визуализации хаотических процессов в пространстве. В частности, на примере известных хаотических аттракторов, я покажу как создавать динамические системы и использовать их в задачах, связанных с программируемыми логическими интегральными схемами (ПЛИС).


Окунуться в мир хаоса...
Total votes 40: ↑40 and ↓0 +40
Comments 13

Добавляем инструкции в микропроцессор MIPS, которые работают в конвейере как его собственные

Reading time 8 min
Views 12K
System Analysis and Design *Assembler *FPGA *Programming microcontrollers *
Можно ли добавить в микропроцессор инструкции (команды)? Если вы используете микросхемы ПЛИС / FPGA с реконфигурируемой логикой и микропроцессорное ядро, которые синтезирутся из описания на языках Verilog и VHDL, то можете. Причем это будет «честное», настоящее расширение системы команд, а не трюк типа программной эмуляции инструкции в обработчике исключения от зарезервированной команды, и не «микрокод», популярный в исторических процессорах 1970-х годов.

Команды, добавленные в современный синтезируемый процессор с помощью модификации его исходников на Verilog или VHDL, могут работать в конвейере и обрабатываться процессором как его собственные, без временных задержек.

Главная проблема с модификацией исходников дизайна процессора на Verilog или VHDL — трудоемкость. Нужно понять, как работает логика различных блоков и избежать нежелательных побочных эффектов. К счастью, существует способ расширения процессора, который превращает семестровый студенческий проект в нечто, что студент может спроектировать за одну лабораторную работу. Этот способ — интерфейс CorExtend / UDI (User Defined Instructions) в микропроцессорном ядре MIPS microAptiv UP, которое используется в пакете для образования MIPSfpga.

В рамках университетской программы MIPSfpga компании Imagination Technologies можно скачать настоящий индустриальный код на Verilog процессора MIPS microAptiv UP.
https://community.imgtec.com/university/resources/

Одним из распространенных применений UDI является манипуляции битами в алгоритмах шифрования. Другой пример — создание специальных инструкций для ускорения алгоритмов ЦОС Accelerating DSP Filter Loops with MIPS® CorExtend® Instructions.

Однако в наборе документации к MIPSfpga интерфейс между ядром и CorExtend описан недостаточно подробно. Подробная документация предоставляется только лицензиатам ядер. В этой статье представлено мое описание данного интерфейса на основе изучения исходного кода. Его можно также скачать в формате pdf MIPS microAptiv UP Processor CorExtend UDI interface protocol guide.

CorExtend занимает следующее место в RTL иерархии ядра m14k microAptiv.

CorExtend RTL Hierarchy
Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Comments 4

Как я ошибся при написании хеш-таблицы и какие выводы из этого сделал

Reading time 23 min
Views 25K
Programming *Debugging *FPGA *
Для ясности теоретического понимания нет лучшего пути, чем учиться на своих собственных ошибках, на собственном горьком опыте. (Фридрих Энгельс)

Всем привет!


Несколько недель назад мне в линкедине написал коллега и сообщил, что в моем проекте на гитхабе не совсем верно работает хеш-таблица.


Мне прислали тесты и фикс, и действительно создавалась ситуация, где система "зависала". При расследовании проблемы я понял, что допустил несколько ошибок при верификации. На Хабре тема верификации RTL-кода не слишком подробна расписана, поэтому я и решил написать статью.


Из статьи вы узнаете:


  • как можно организовать хеш-таблицу на FPGA.
  • на чём была построена верификация.
  • какие ошибки я допустил (они привели к тому, что бага не была замечена раньше).
  • как это всё можно исправить.

Добро пожаловать под кат!

Читать дальше →
Total votes 39: ↑37 and ↓2 +35
Comments 9

Один день из жизни тестировщика системы локального позиционирования

Reading time 7 min
Views 15K
RealTrac Technologies corporate blog IT systems testing *
Всем привет!
Меня зовут Денис nimpos Койвистойнен и я являюсь тестировщиком в компании RTL-Service.

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

Поехали


9:00
Начало нашего трудового дня. Первым делом смотрим какие письма пришли по электронной почте и перечень текущих дел на сегодня. Обычно список задач в отделе тестирования большой, у каждой из задач разные приоритеты — в первую очередь обращаем наше внимание на задачи со статусом «Срочно» и «Немедленно», которые ставят разработчики и менеджеры проектов.
Читать дальше →
Total votes 21: ↑16 and ↓5 +11
Comments 10

FPGA для программиста, конечные автоматы (verilog)

Reading time 12 min
Views 23K
FPGA *

Стиль описания конечного автомата как образ мышления


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

Например, очень популярной является работа: Clifford E. Cummings, The Fundamentals of Efficient Synthesizable Finite State Machine Design using NC-Verilog and BuildGates. Всякий раз, когда специалисты решают обсудить, как правильно писать конечные автоматы, кто-то обязательно достает эту публикацию.

Статья стала настолько авторитетной, что многие даже не стараются анализировать аргументы автора. В частности, бытует мнение, что профессионалы всегда используют двухчастный способ описания конечных автоматов, имеется ввиду, описание конечных автоматов в 2 always блока. Это утверждение продолжает вызывать жаркие споры, и я хочу пояснить различия в описаниях конечного автомата с разным количество always блоков.

В беседах с коллегами я понял, что споры о том, как надо писать конечные автоматы в 1 или 2, 3 always блока, связаны с разным представлением (осознанием) реализуемого алгоритма, разным типом мышления. Попробую показать это на примере.

Я полагаю, что эта статья не первая статья о FSM и Verilog в вашей жизни, поэтому я не буду объяснять ни что такое конечный автомат, ни как он описывается на Verilog, а перейду сразу к делу.
Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Comments 27

Синхронный системный интерфейс взаимодействия с периферийными блоками в объёме кристалла СБИС или ПЛИС. STI 1.0

Reading time 21 min
Views 4.5K
Interfaces *FPGA *
В статье предложена организация взаимодействия функциональных блоков в объёме кристалла СБИС, а именно: процессорных ядер, контроллеров DMA и мостов системных шин с периферийными блоками, такими как: контроллеры GPIO, SPI, I2C, UART, таймеры и широтно-импульсные модуляторы – ШИМ. Рассмотрен набор сигналов и протокол обмена стыка простого исполнителя – локального системного интерфейса, реализующего взаимодействие перечисленных блоков кристалла. Приведены примеры синтезируемых моделей контроллера GPIO и регистрового файла, поддерживающие описанный интерфейс.
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Comments 6

Справа налево. Что такое dir=rtl и как приручить арабский язык

Reading time 8 min
Views 35K
2ГИС corporate blog Website development *Programming *HTML *Language localisation *


Привет, Хабр. Мы недавно перевели на арабский язык 2ГИС Онлайн, и хотим поделиться своим опытом адаптации интерфейса под RTL (right-to-left). Это будет актуально и для иврита, и для персидского языка.


Я разделю этот опыт на две статьи — теоретическую и практическую. Сегодня — больше про теорию. Я расскажу, зачем нам понадобилось переворачивать весь интерфейс, что для разработчика интерфейсов значит фраза «сделать арабскую версию» и как справиться с арабским языком, смешанным с английским. Особое внимание уделю алгоритму, по которому строится отображение текста смешанной направленности — unicode bidirectional algorithm.

Дальше читать
Total votes 86: ↑86 and ↓0 +86
Comments 48

Cadence представит Genus на семинарах по разработке микросхем в Питере и Зеленограде

Reading time 2 min
Views 7.2K
CPU Electronics for beginners
Новости дружественных организаций (Cadence, МИЭТ, ИТМО, НПЦ Элвис и других):

Cadence Design Systems, одна из двух крупнейших мировых компаний в области автоматизации разработки микросхем, 15-16 октября проведет семинары в Московском институте электронной техники (МИЭТ) в Зеленограде и Питерском Университете ИТМО, в котором (по опыту моей поездки 2012 года) студенты очень хорошо понимают Verilog и системы на кристалле.

В семинарах примут участие и три российские компании «Элекроприбор», НИИМА «Прогресс» и НПЦ «Элвис». См. статью про сотрудничество с Imagination Technologies родственной НПЦ «Элвис» организации «Элвис-Неотек» на сайте Роснано.

Среди презентаций я лично рекомендую посмотреть на новый тул для синтеза Genus — я видел и заснял его презентацию в июне на выставке Design Automation Conference в Сан-Франциско:


Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 14

Справа налево. Как перевернуть интерфейс сайта под RTL

Reading time 10 min
Views 14K
2ГИС corporate blog Website development *CSS *Programming *Language localisation *

image


Мы недавно перевели онлайн-версию 2ГИС на арабский язык, и в прошлой статье я рассказал о необходимой для этого теории — что такое dir="rtl", по каким правилам отображается текст смешанной направленности и как держать себя в руках.


Настало время приступить к практике — перевернуть с минимальными усилиями весь интерфейс справа налево так, чтобы даже настоящий араб не почувствовал подвоха.


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

Переворачивай скорей
Total votes 58: ↑58 and ↓0 +58
Comments 6

Если вы в Казани или Новосибирске и хотите проектировать микросхемы, как в Купертино

Reading time 3 min
Views 22K
High performance *System Analysis and Design *FPGA *Manufacture and development of electronics *The future is here
Господа! На фотографии Ирина, девушка из Новосибирска, рассматривает музейную экспозицию про персональные компьютеры 1980-х годов. Именно тогда, в 1980-х, окончательно произошел весьма неприятный разрыв между западной электроникой и советской. Если в 1970-х советская электроника просто отставала лет на 7 (если судить по датам выхода DEC PDP-11 и СМ-4), то в районе 386-го она просто померла.

Одновременно в конце 1980-х на Западе появилась технология логического синтеза из языков описания аппаратуры Verilog и VHDL. Эта технология стала мейнстримом в 1990-х и в конечном итоге в 21 веке привела к айфонам и нейроускорителям. Логический синтез ввели во всяких MIT и Стенфордах вместе с лабами на ПЛИС-ах еще в 1990-е, но в России и Украине того времени пораженческие настроения и неверие в отечественную электронику привели к тому, что исправлять ситуацию предстоит нам сейчас.

Для того, чтобы построить в России экосистему разработки электроники, с сотнями компаний, а не дюжиной, как сейчас, нужно делать то, что делали в США в 1990-х и делают сейчас в Китае: выучить кучу молодых инженеров принципам логического проектирования цифровых схем на уровне регистровых передач. Даже если не все из них будут проектировать микропроцессоры и сетевые чипы, а половина пойдет в чистое программирование, эти знания не пропадут зря: время повышения быстродействия компьютеров за счет уменьшения транзисторов подходит к концу, и везде наступают гибридные софтверно-хардверные решения, со специализированными аппаратными вычислительными блоками — об этом недавно даже произнес речь Джон Хеннесси, председатель совета директоров компании Alphabet / Google.



Я это все говорю к тому, что она днях в Новосибирске пройдет одно из мероприятий по вытаскиванию России из неразвитого состояния в данной области.
Читать дальше →
Total votes 45: ↑39 and ↓6 +33
Comments 173

(Справа налево (Зазеркалье

Reading time 6 min
Views 8.2K
Website development *Typography *Design
Translation

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

Локализация в Spotify — важное дело. Наша миссия состоит в том, чтобы «раскрыть потенциал человеческого творчества, предоставляя миллионам музыкантов возможность зарабатывать своим искусством на жизнь, а миллиардам поклонников — наслаждаться и вдохновляться им». Для достижения этой миссии важно, чтобы пользователи из разных стран могли эффективно общаться на своих языках. Недавно мы запустили Spotify в регионах Северной Африки и Западной Азии. Одним из языков в этих регионах является арабский. В отличие от английского, арабский читается справа налево. Это сказывается на веб-сайтах, которые хотят поддерживать арабский язык.
Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Comments 3

Локализация приложения и поддержка RTL. Доклад Яндекс.Такси

Reading time 9 min
Views 3.9K
Яндекс corporate blog Development of mobile applications *Development for Android *Language localisation *
При локализации сервиса важно внимательно отнестись к согласованию переводов между собой. Руководитель группы клиентской Android-разработки Яндекс.Такси Александр Бонель рассказал, какие практики и инструменты упрощают локализацию. Во второй части доклада Саша поделился опытом поддержки языка RTL в приложении: что хорошо, а что не совсем работает у Андроида из коробки, какие проблемы возникают из-за поддержки RTL и как их минимизировать в будущем.


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

Total votes 19: ↑17 and ↓2 +15
Comments 3

Использование верилятора как средства быстрого моделирования RTL проектов. Введение в UVM

Reading time 8 min
Views 11K
C++ *Compilers *Manufacture and development of electronics *Software
Sandbox
В данной статье будут описаны установка и применение бесплатного ПО для моделирования схем цифровой логики на языке Verilog как альтернативы коммерческих продуктов Incisve от компании Cadense и ModelSim от компании MentorGraphics. Сравнение моделирования в ModelSim и Verilator. Так же будет рассмотрена универсальная методолгия верификации — UVM.

Установка ПО для SystemC UVM


1. Верилятор


Одним из языков описания аппаратуры является verilog. На этом языке можно написать модуль.

Например, есть схема счетика:

image

Его код будет выглядеть так:

reg [3:0]counter;
always @(posedge clk or posedge reset)
  if(reset)
    counter <= 4'd0;
  else
    counter <= counter + 1'd1;

После симуляции получим вейвформы:

image

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

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

Для тестирование кода проекта помимо таких языков как Verilog, SystemVerilog, Python (для написания моделей), можно использовать язык SystemC. SystemC — язык проектирования и верификации моделей системного уровня, реализованный в виде C++ библиотеки с открытым исходным кодом.

Один из способов верификации Verilog модулей с помощью SystemC является трансляция verilog файлов в С++. Поможет нам в этом Verilator.

Verilator — это самый быстрый бесплатный симулятор Verilog HDL, который превосходит большинство коммерческих симуляторов. Verilator компилирует синтезируемый SystemVerilog (обычно это не код тестового стенда), а также некоторые утверждения SystemVerilog и Synthesis в однопоточный или многопоточный код C ++ или SystemC. Verilator был разработан для больших проектов, где быстродействие симуляции имеет первостепенное значение, и особенно хорошо подходит для генерации исполняемых моделей процессоров для групп разработчиков встроенного программного обеспечения. Verilator используется для имитации многих очень больших многомиллионных конструкций шлюзов с тысячами модулей и поддерживается многими поставщиками IP-технологий, включая IP от Arm и всех известных поставщиков RISC-V IP.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 8

Простая реализация небольших CAM на ПЛИС

Reading time 3 min
Views 5.1K
FPGA *

Введение


Как-то раз мне потребовалось по работе реализовать небольшой блок CAM (ассоциативной памяти). Почитав, как это делается у Xilinx на BRAM (блоках статической памяти) или на SRL16 (16 — битных сдвиговых регистрах), я несколько опечалился, так как их реализации занимали довольно много места. Решил попробовать сделать его самостоятельно. Первым вариантом стала реализация в лоб. Забегая вперед, она практически сходу мне и подошла, благо, целевая частота для дизайна была всего 125 МГц.

Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 21
1