Как стать автором
Обновить
120
0
Волька @ibnteo

Веб-разработчик

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

Как искусственный язык стал живым: история эсперанто

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

Эсперанто – плановый язык, созданный в 1887 году Людвигом Заменгофом для международного общения и известный тем, что содержит 16 правил и ни одного исключения. 140 лет спустя он все еще жив, его словарный запас вырос как минимум в 17 раз (с 904 корней при создании до 17000 корней в словаре Plena Ilustrita Vortaro издания 2020 года), им владеют по разным подсчетам от десятков тысяч до миллионов людей по всему миру, включая тех, кто говорит на нем с рождения. Как изменился язык? Утратил ли он свою простоту? Понял бы Заменгоф современных эсперантистов? Сейчас разберемся.

Очевидно, что словарный запас языка сильно расширился; прирост в 1600% за 140 лет – это в разы больше, чем бывает у естественных языков, но сделаем скидку на то, что время бурное, язык только появился, а 900 корней все же маловато даже для повседневного общения. Как и в естественных языках, слова обычно возникает так: много человек придумывает слово для обозначения какого-то понятия, оно кому-то нравится, им начинают пользоваться другие, какое-то время эти варианты сосуществуют, потом один побеждает, слово закрепляется в речи и далее попадает в словари. Иногда слова заимствовали, но чаще всего пытались использовать уже имеющиеся в эсперанто элементы. Рассмотрим, например, компьютерную лексику с корнем -ret-:

reto – сеть

Interreto – интернет

eksterreta (прилагательное) – офлайн: например, офлайн-версия

retejo – сайт

retejestro – администратор сайта

retumi – сидеть в интернете

retumilo – браузер

retumejo – интернет-кафе

enretigi – выложить в интернете

Читать далее
Всего голосов 55: ↑54 и ↓1+66
Комментарии202

Как создать редактор кода для 40+ языков с помощью React

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

Подробностями разработки онлайн-платформы выполнения и компиляции кода более чем на 40 языках делимся к старту курса по Frontend-разработке. Автор этого материала — основатель TailwindMasterKit.

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

Как и зачем я отключил свой фавикон

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

Перевод статьи "Disabling My Favicon: How and Why"

Статья о том как и зачем я убирал фавиконку со своего сайта.

Читать далее
Всего голосов 23: ↑15 и ↓8+11
Комментарии18

Flutter for Desktop — новый подход к разработке приложений

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

Язык программирования Dart был изначально разработан как перспективная замена JavaScript в веб-приложениях (с поддержкой асинхронности, потоков, классической поддержки ООП и возможностью использования строгой типизации), но, к сожалению, в этом качестве он так и не достиг значительных успехов. Однако в дальнейшем компилятор Dart был доработан для других целевых платформ и наибольшего успеха достиг в сочетании с фреймворком Flutter как инструмент разработки высокопроизводительных мобильных приложений, создаваемых на основе реактивной модели. Но нужно отметить, что наряду с возможностями компиляции в целевые платформы Android и iOS (а также, разумеется, Web), Dart также может использоваться для создания приложений для операционных систем Windows, Linux и MacOS, что в сочетании с возможностями фреймворка Flutter и оптимизированных платформенных реализаций Flutter Engine и Embedder, представило новый путь к созданию нативных приложений с графическим интерфейсом. В этой статье мы рассмотрим возможности и особенности реализации desktop-приложений на Flutter и разберемся с механизмами интеграции внешних библиотек.

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

Универсальная кириллица: возможна ли такая клавиатура?

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

Текст написан иностранным агентом – лицом, проживающим за пределами России (в Канаде)

За пару дней до Рождества на Хабре появился пост про транслитерацию польского языка кириллицей. Хотя идея на первый взгляд выглядит всего лишь как занимательное развлечение, на практике с задачами подобного рода периодически сталкиваются лингвисты. Когда лингвисту необходимо сравнить лексику родственных языков (особенно когда речь идёт о массовом сравнении в рамках корпусной лингвистики), сравниваемые языки нужно для начала «привести к общему знаменателю», то есть передать в единой графике, чаще всего латинице, чтобы облегчить сравнение. Даже с учётом неизбежных расхождений между орфографией и произношением (как в английском и французском языках) единая система письма сильно упрощает задачу сравнения. И не только сравнения, но и изучения. Скажем, если Вы начали учить язык с совершенно незнакомой системой письма (корейский, китайский, санскрит и т.п.), наверняка первые изученные Вами слова и фразы будут записаны в транслитерации латиницей (а то и кириллицей).

Ни кириллица, ни латиница не является единой унифицированной системой письма. В каждом языке, использующем кириллицу или латиницу, есть свои правила произношения того или иного знака, весьма отличные друг от друга. Но кроме того, существуют многочисленные дополнительные знаки для звуков, присутствующих в одном языке, но отсутствующих в другом. К примеру, звук «ш» существует во многих европейских языках, но создать единую букву для него в латинице так и не сподобились. Где-то обходятся сочетаниями (sh в английском и албанском, sch в немецком, ch во французском, sz в польском, sc в итальянском, sj в шведском, si или se – в ирландском), где-то под этот звук «переопределили» базовые буквы латиницы (x в португальском, старая знакомая s – в венгерском), где-то изобрели новые буквы путём добавления надстрочных или подстрочных значков к старым (š в чешском, словацком и балтийских, ş в турецком, ș в румынском – приглядевшись под микроскопом, увидите, что знак немного отличается от турецкого; и даже в искусственном языке эсперанто придумали свой знак ŝ). Некоторым языкам повезло – в них этого звука вообще нет, как не было его в латыни (отчего, собственно, и возникли эти проблемы с изобретением дополнительного символа).

Читать далее
Всего голосов 17: ↑16 и ↓1+19
Комментарии42

Android In-app purchasing: платное отключение рекламы в своём приложении

Время на прочтение6 мин
Количество просмотров41K
Много раз уже просили написать статью о том, как в приложении реализовать платное отключение рекламы. По In-app уже были статьи на хабре. Правда, они старую версию API рассматривали. В принципе, новая версия не особо то и отличается от старой. Была похожая статья, но там больше именно про отображение рекламы рассказывалось, а второй части статьи мы так и не увидели. Как оказалось, многим до сих пор интересен этот вопрос, решил написать как это реализовать в своём приложении.
Читать дальше →
Всего голосов 37: ↑29 и ↓8+21
Комментарии18

Абсолютный поворотный энкодер с однодорожечным кодом Грея

Время на прочтение2 мин
Количество просмотров16K
В этом материале речь пойдёт о физической реализации абсолютного поворотного энкодера. Разрешение этого энкодера составляет 6 градусов, то есть — 60 шагов. Этого достаточно для того чтобы сделать на его основе часы. Здесь используется одношаговый код Грея.


Читать дальше →
Всего голосов 50: ↑48 и ↓2+66
Комментарии20

Не жми на кнопку: про эргономичный интерфейс бытовой техники

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

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

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

Интерактивная карта развития Московского метрополитена

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

15 мая 1935 была открыта первая очередь Московского метрополитена. С этого момента началась новая эра в истории города, в котором подземка, безусловно, играет важную роль.

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

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

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

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

Как ваш браузер обрабатывает прикосновения к экрану телефона (js touch events)

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

Ссылка на github

Здесь я поделюсь своим опытом и постараюсь максимально подробно рассказать все основные фитчи которые есть в вашем javascript для обработки прикосновение к дисплею. touchstart и т.д.

ЧИТАТЬ
Всего голосов 9: ↑8 и ↓1+9
Комментарии7

Фонетическая раскладка на основе анализов частотности

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

Предыстория и предпосылки


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

На каждой раскладке свой набор символов, из-за чего для некоторого набора нужно было переключать раскладку, вводить символ, а после возвращаться на прошлую; на каждой раскладке своё расположение для одних и тех же символов; некоторые востребованные символы и вовсе доступны только через комбинации с alt; ужасное расположение «ё» на русской раскладке; ну а об общем позиционировании букв на «qwerty» вы наверняка уже читали ранее, как и о полулегенде о намеренно сложном для набора расположении, как костыле для обхода западания клавиш на первых пишущих машинках.

Тогда я стал искать, что же предлагают альтернативные раскладки. Как оказалось, они все пытаются решить только последнюю проблему. Бесспорно, весьма успешно, но только одну-единственную проблему. И только для английского языка. Для русского найденные раскладки выглядели крайне сомнительно и, как мы убедимся позже, едва ли были лучше стандартной. Также многие английские раскладки, очевидно, разрабатывались с оглядкой на «qwerty», не создавая альтернативу, а попросту немного изменяя стандартный вариант позиционирования.

И это всего две раскладки, для двух популярнейших в интернете языков, хотя многие пользуются и тремя, а то и более.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии38

Обзор Google Play Billing 4.0.0

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

Всем привет. Я SDK Engineer в Qonversion Мария Бордунова.

Сегодня речь пойдет о библиотеке Google Play Billing Library 4.0.0, которая к концу этого года должна открыть новые возможности для приложений со встроенными покупками.

Согласно анонсу Google, четвертая версия Billing Library позволит оптимизировать покупки внутри приложений:

Появится возможность приобретать несколько расходуемых (consumable) in-app продуктов единовременно. На данный момент можно покупать только 1 единицу продукта за раз. 

Пользователь сможет сам определять состав подписки, то есть приобрести несколько продуктов как часть одной подписки.

Так как еще не все перешли на Billing Library v4, я бы хотела рассказать, на что стоит обратить внимание при миграции на новую версию.

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

SQLite-песочница в браузере

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

Чего мне всегда не хватало, так это аналога JSFiddle для SQLite. Онлайн-песочницы, в которой можно быстро проверить SQL-запрос и поделиться с другими.

Вот чего хотелось:

— Возможность загрузить готовую базу, а не писать SQL для создания таблиц.
— Подключать как локальные базы, так и удаленные (по url).
— Сохранять базу и запросы в облаке.
— Бесплатно и без регистрации.
— Свежайшая версия SQLite.
— Минимализм.

В итоге сделал сам
Всего голосов 70: ↑70 и ↓0+70
Комментарии9

Покупки в Android приложении — Play Billing Library

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

И как это до сих пор на Хабре нет статьи об этом? Не дело, надо исправлять.

Есть 2 способа добавить In-App покупки в Android-приложение — старый и новый. До 2017 года все пользовались библиотекой от anjlab, но с июня 2017 года ситуация изменилась, Google выпустила собственную библиотеку для внутренних покупок и подписок — Play Billing Library. Сейчас последний считается стандартом.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии24

Быстрое кроссплатформенное HTML5 приложение на Framework7

Время на прочтение10 мин
Количество просмотров79K
Задумываясь о разработке html5 приложения, многим сразу на ум приходит jQuery, или точнее jQueryMobile. И попробовав написать даже самое простенькое приложение используя jQueryMobile, очень легко разочароваться, так как производительность и отзывчивость получившегося html5 приложения куда ниже ожидаемого, и уж совсем его не сравнить с нативными приложениями.


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

Атипичные клавиатуры

Время на прочтение7 мин
Количество просмотров18K
Говорят, что обычная QWERTY-клавиатура была изобретена с целью уменьшить скорость набора, потому что у слишком быстрых машинистов первые машинки клинили. Не знаю, сколько в этом утверждении правды, но то, что раскладка далеко не идеальна — факт. Факт также то, что разрабатывалась она для печати десятью пальцами на больших клавишах размещенных в три ряда.

В неизменном виде она перекочевала на электрические пишущие машинки, а затем и на компьютерные клавиатуры, где все стало ещё удобнее — теперь клавиши срабатывали от легкого нажимания, и по ним не приходилось лупить со всей дури.
Все было бы просто отлично, если бы не страсть к минимизации. Ноутбуки, нетбуки, классические смартфоны (не «тачфоны») — QWERTY-клавиатура стремительно уменьшалась в размерах, сохраняя при том свою сущность. Для некоторых таких творений впору вести набор спичками. Были и неплохие инженерные решения — например на Sony-Ericsson M600i клавиши-качели содержали по две-четыре символа, и они выбирались в зависимости от способа нажима.

Но когда это добро перекочевало на экраны… возьмем в качестве образца айфон(да, исторически первым [массовым] тачфоном все-таки было яблоко): три с половиной дюйма диагонали, отношение сторон — 2:3. Кто помнит теорему Пифагора, какова ширина экрана?
x² + (3x/2)² = 3,5²
x² = 49/13
x ≈ 1,94" ≈ 49,3мм.
Итак, ширина экрана — меньше 5 сантиметров. В ряду — 10 клавиш. Получается — около 5 мм на клавишу, и это включая промежутки между ними. Не знаю как у вас, а меня пальцы ощутимо шире, да и печатать на приборе таких размеров я могу только одним, ну максимум двумя большими пальцами одновременно. Ну не могу я печатать на ЭТОМ, при всей его умности! Хватит обратной совместимости! Я печатать вслепую научился за неделю, так дайте мне клавиатуру, где не придется целится в клавиши! Я её изучу! Я хочу комфортно и быстро печатать!

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

Их я и попытаюсь сегодня осмотреть.
Читать дальше →
Всего голосов 161: ↑148 и ↓13+135
Комментарии157

Создание сеток шестиугольников

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

Сетки из шестиугольников (гексагональные сетки) используются в некоторых играх, но они не так просты и распространены, как сетки прямоугольников. Я коллекционирую ресурсы о сетках шестиугольников уже почти 20 лет, и написал это руководство по самым элегантным подходам, реализуемым в простейшем коде. В статье часто используются руководства Чарльза Фу (Charles Fu) и Кларка Вербрюгге (Clark Verbrugge). Я опишу различные способы создания сеток шестиугольников, их взаимосвязь, а также самые общие алгоритмы. Многие части этой статьи интерактивны: выбор типа сетки изменяет соответствующие схемы, код и тексты. (Прим. пер.: это относится только к оригиналу, советую его изучить. В переводе вся информация оригинала сохранена, но без интерактивности.).
Читать дальше →
Всего голосов 92: ↑91 и ↓1+90
Комментарии25

Законы программирования

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

Законы, теории, принципы и закономерности, полезные для разработчиков


Введение


Перевод репозитория github.com/dwmkerr/hacker-laws

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

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

Законы


Закон Амдала


Закон Амдала — это формула, демонстрирующая потенциал ускорения вычислительной задачи, которого можно достичь при увеличении количества ресурсов системы. Обычно он используется в параллельных вычислениях, и может предсказать наличие реальных преимуществ от увеличения количества процессоров с учётом ограничений параллелизуемости программы.
Читать дальше →
Всего голосов 67: ↑65 и ↓2+80
Комментарии21

Умеет ли человечество писать алгоритмы? Безошибочные алгоритмы и язык ДРАКОН

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

Когда мы научимся создавать безошибочные алгоритмы? Двойная катастрофа самолета Боинг 737 МАХ явилась крупнейшей по своим масштабам алгоритмической трагедией за всю историю человечества.
На руках разработчиков алгоритмов кровь сотен людей.
Глава корпорации Boeing, выдающийся инженер и талантливый руководитель Деннис Мюленбург на слушаниях в конгрессе США выглядел как нашкодивший мальчишка и слетел со своего поста как пушинка.

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

Визуальный алгоритмический язык ДРАКОН и ДРАКОН-методология опираются на новые идеи, демонстрируют заметные успехи в области безопасного создания алгоритмов и жизнеритмов.
ДРАКОН использует мантру безошибочности (батарею новых методов) и уверенно делает первый шаг к безошибочному будущему.
К сожалению, есть и ложка дегтя. Язык ДРАКОН пока еще не существует (есть лишь только разговоры) и занимает микроскопическую долю рынка. Но на него стоит обратить серьезное внимание.

Читать далее
Всего голосов 31: ↑12 и ↓190
Комментарии585

Защита ядра Linux из ARM Trustzone: как усилить Linux Kernel Runtime Guard и предотвращать последствия zero-day

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


Всем привет! В ОС Аврора мы уделяем большое внимание обеспечению безопасности. Сегодня немного расскажем о перспективном подходе — синергии технологии ARM TrustZone и open-source проекта Linux Kernel Runtime Guard (LKRG) для повышения защищённости девайсов (в том числе от zero-day уязвимостей). Поговорим о том, что такое вообще ARM TrustZone, продукт Аврора ТЕЕ, пройдёмся по внутреннему миру LKRG и его ограничениям. Затем о том, как с использованием доверенной среды исполнения можно преодолеть эти ограничения, для того чтобы LKRG можно было рассматривать для применения в продакшене ОС.

Cтатья была подготовлена по материалам доклада нашего коллеги Антона Рыбакова на конференции OS-DAY 2020 https://youtu.be/jjYJKZK_bas

Итак, для начала краткое содержание:


• О технологии ARM TrustZone и Аврора ТЕЕ
• О проекте Linux Kernel Runtime Guard
• Ограничения Linux Kernel Runtime Guard
• Устранение недостатков с помощью ARM TrustZone

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

Информация

В рейтинге
Не участвует
Откуда
Москва и Московская обл., Россия
Зарегистрирован
Активность