Сайт для изучения идиом на разных языках и в разных регионах.

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

идиома: существительное. Речевая форма или выражение данного языка, которое грамматически свойственно ему самому или не может быть понято из отдельных значений его элементов, как в контроле.

Мне посчастливилось работать с людьми из разных стран, и я заметил, что когда я использую идиоматическое выражение (например, отнеситесь к этому с недоверием), я иногда вижу пустые взгляды товарищей по команде, которые никогда не слышали этого раньше. Это привело к тому, что я (вероятно, досадно) спросил своих коллег, как выразить идиомы на их родном языке. Я записал их и искал больше в Интернете. Я был очарован идиомами, которые иногда были очень похожи на мои, а иногда совершенно другие. Я нашел несколько мест в Интернете, где есть части информации, которую я искал, но информация в основном разбросана по многим доскам объявлений и сайтам. Лучший ресурс, который я нашел до сих пор, — это wiktionary.org, но я чувствовал, что есть возможность создать что-то, ориентированное только на идиомы, и позволить более глубокое исследование.

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

Мои цели для этого проекта были (в этом порядке):

  • Изучайте новые технологии
  • Делитесь техническими знаниями, написав и опубликовав код на GitHub.
  • Продолжайте изучать идиомы и язык, работая над проектом.
  • Опубликуйте сайт, который будет полезен хотя бы еще одному человеку 🙂

Функциональность

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

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

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

Для визуализации связанных идиом я создал два представления: представление в виде списка и интерактивную карту, чтобы вы могли исследовать эквивалентные идиомы по всему миру. Построение этого вида привело к интересному дизайнерскому решению. Являются ли идиомы переходными?

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

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

Технологии

Часто, когда я начинаю сторонний проект, я говорю себе «Это отличный шанс изучить новые технологии» и продолжаю пробовать все новые технологии, языки программирования, фреймворки и инструменты. Я настолько ошеломлен, что сдаюсь и больше никогда не прикасаюсь к этой штуке. (У меня есть много наполовину запущенных репозиториев GitHub, подтверждающих это.)

Может быть, мне следует использовать этот проект для изучения раскладки клавиатуры Дворака при первом кодировании в VIM и использовании Haskell?

Дело в том, что сайд-проект — это то, чем вы занимаетесь… на стороне. Я трачу ограниченное время на это в любой день и ухожу от него на долгое время. Я понял, что если я поставлю входной барьер слишком высоким, то никогда не доведу его до конца и не научусь, поскольку постепенное продвижение вперед слишком пугает.

В этот раз я подошел к этому более размеренно (можно сказать, я был однажды укушен, дважды застеснялся). Я составил список технологий, которые хотел изучить глубже, и подкрепил их теми, которые хорошо знал. Я использовал Typescript и React как свои известные технологии, но затем исследовал

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

Например, вначале я изо всех сил пытался заставить генерацию типа запроса GraphQL с помощью TypeScript работать хорошо. Но я мог делать перерывы в этом и работать над другими частями, пока, наконец, не смог заставить это работать. (Я планирую в будущем написать больше об опыте работы с GraphQL в рамках этого проекта).

На собственном горьком опыте я понял, что разнообразие экосистемы пакетов Node.js — это и благословение, и проклятие. Существует множество библиотек для решения какой-то одной проблемы, но при выборе нужно тщательно учитывать несколько факторов:

  • общее качество упаковки
  • насколько хорошо он сочетается с другими пакетами в проекте
  • есть ли у него опубликованные и актуальные типизации TypeScript

Кроме того, я изучил различные варианты и услуги хостинга Azure. После некоторых изысканий я остановился на

В целом, это работает довольно хорошо. Однако удержать расходы на низком уровне было проблемой. Я рано понял, что простая ошибка или непонимание настроек может привести к быстрому росту затрат. Особенно для CosmosDB, так как с зарезервированным минимумом RU трудно не заметить, что цена вырастет, если вы хотите больше коллекций или дополнительных баз данных.

Использование MongoDB API в CosmosDB работало прилично, но разрыв между функциями в MongoDB и теми, которые поддерживает CosmosDB, временами разочаровывал (хотя они над этим работают). Я чувствую, что все еще достиг своей цели изучения модели программирования MongoDb, тем более, что мне пришлось дважды переписывать некоторые функции: один раз в моем идеальном способе, а затем менее оптимальным способом, когда я узнал, что CosmosDB не поддерживает то, что я пытался делать.

Исходный код Idiomatically опубликован на GitHub. Я надеюсь, что этот полный сквозной пример веб-сайта TypeScript, написанного с помощью Apollo, GraphQL, React и рендеринга на стороне сервера (ssr), поможет разблокировать кого-то еще, когда они строят с похожим стеком.

Заключительные слова

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