Pull to refresh
11
0
Vyacheslav Shimarulin @shimarulin

Разработчик

Send message

Я думаю, проект все же нужен. Как минимум автору поста. Этого более чем достаточно)

Так подкиньте же, уважаемый, не томите скорбным ожиданием) Возможно не автор поста, но кто-нибудь другой загорится идеей.

  1. Логика шифрования/дешифрования должна опираться на стандартные, проверенные и открытые решения. Тогда и самому писать ее не нужно, и причин прятать нет. Я с гораздо большим недоверием отношусь к программе, алгоритм шифрования которой мне неизвестен, чем к открытой программе вообще без шифрования. Так как программа хранит мои текстовые данные, я хочу иметь доступ к этим данным независимо от существования этой программы, на том простом основании, что данные - мои. Как только данные зашифрованы неизвестным алгоритмом, я немедленно теряю контроль над ними, мне просто дают ими попользоваться. Однажды могут и не дать, письменных гарантий я не получал))) В общем банально прикрутить RSA и дать пользователям хранить у себя ключик было бы маленькой задачей для программиста, но огромным скачком для программы)

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

А вообще интересный опыт, дерзайте! Я сам дважды в одиночку писал приложения подобного рода (на разном стеке), прежде чем появился Obsidian, в котором все мои хотелки были воплощены)

Представьте себе, что если я положу руку на раскаленную сковородку (ну или на дровяную чугунную печь), то я почуствую буквально следующее:

  1. Тепло и температура в этой части значительно превышает температуру тела (назовем это "интенсивность"), тепло ощущается всей поверхностью кожи (назовем это "целостность").

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

  3. Все то же самое, но из "целостности" выключается часть "пространственных" ощущений (кожа уже повреждена и начинается повреждение мышц)...

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

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

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

Однако со временем мне удается реагировать на это все достаточно быстро и я, как и любой человек, достаточно быстро отдерну руку от горячей сковороды. Разницы никто не заметит. Но для достижения такого результата потребовалось приложить огромное количество усилий, ну и вообще как-то еще выжить при этом. И вот я думаю: людям дан такой замечательный и универсальный инструмент для того, чтобы не попадать в опасные ситуации. Если бы у меня был такой инструмент, я бы испытывал истинное наслаждение от владения им. Так почему они так кричат, когда его используют? Почему я не вижу этого "истинного наслаждения" от того, что им доступна боль? Что такое "боль", в их понимании? И кто я по-вашему, "филосовский зомби" или все-таки человек?

Согласен со всем, кроме "нет, не жалко". Вот тут яркий пример такого "ублюдка" описал. Но бывает, автомобилисты давят и тех, кто соблюдает все правила, да и вообще, делить на "жалко/не жалко" у меня язык не поворачивается, даже если бы мне подвернулся тот самый "ублюдок" - давить бы не стал. Только электрический стул справедливое наказание по закону.

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

Самокатчики тоже разные бывают, есть вполне вменеямые. Но не так давно буквально на моих глазах самокатчик на скорости свыше 40км/ч (я двигался по дороге на автомобиле, когда заметил, как он лихо опережает меня, двигаясь по тротуару) сбил пешехода, когда тот двигался по тротуару в сторону пешеходного перехода на свой разрешающий сигнал. Более чем ожидаемо двигался. Но в итоге оказался сбит, в результате удара был выброшен на проезжую часть и получил серьезные травмы. У владельца самоката было что-то вроде защиты - какой-то шлем и наколенники, и он, вероятно, отделался легко, потому как пока я выскакивал из машины, чтобы помочь пострадавшим, быстро ретировался на своем самокате в соседние дворы. А у девушки, которую он сбил, навскидку перелом бедра, нескольких ребер, и бог весть что еще. Интенсивное кровотечение с трудом удалось остановить до приезда скорой, которая кстати буквально через 3 минуты приехала, полиция приехала следом же. Да, время было позднее, спальный район, вокруг ни души, подозреваю, девушка могла бы просто истечь кровью, прежде чем ее кто-то нашел. Дал показания, оставил контакты, пока тишина. Считаю, что нужно скорость самокатов ограничивать, вот только это не научит безопасному управлению, этому нужно учить отдельно и нужно, чтобы наказание за нарушения, которые привели к травмам/гибели - было неизбежно. Достичь этого на практике будет трудно, и это не отменяет необходимость в инфраструктуре для велосипедистов/самокатчиков. Но нужно что-то делать.

P.S.: В пределах 3-х км я предпочитаю ходить пешком, есть авто и велосипед, иногда пользуюсь шерингом самокатов. И да, я осознаю, что в любой из этих ролей я могу представлять опасность для себя и окружающих, если буду вести себя безрассудно, не притормаживать перед пешеходными переходами на авто, не спешиваться с велосипеда/самоката на этих самых переходах и выскакивать неожиданно для всех из-за угла. Я отвечаю за то, чтобы люди вокруг меня и я не пострадали. И все вокруг меня также отвечают, просто не всегда осознают, а иногда, очевидно, и не хотят, увы.

Обратите внимание на текст комментария:

Пешком.

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

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

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

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

Согласен с предыдущими комментаторами по поводу Ansible. Есть уже готовые проекты для этих целей, которые можно взять за основу, например https://github.com/pigmonkey/spark и https://github.com/raphiz/my-arch-setup. У меня есть https://github.com/shimarulin/workstation для арча и https://github.com/shimarulin/workstation-config для убунты (последний давно не обновлялся, но там можно посмотреть настройку Gnome 3, на арче я гном не использовал)

Я просто хотел обратить внимание, что dartraiden совершенно напрасно ставит себе диагноз, ведь этим должен заниматься квалифицированный специалист) Если диагноза нет, то, внезапно, может его и правда нет, мы ведь не знаем, в чем именно заключалась его нетактичность.

А может это просто "честность"?

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


встать на защиту от уничтожения целых экосистем вроде амазонских/сибирских/индонезийских лесов

А вот "хороший активизм":


помогут полуголодным больным диким особям, которых нужно поискать по лесам

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


То, что подобные "активистские" организации этим не занимаются — это уже другой вопрос. Правильно заметили, что "жалеют того, кого проще или выгоднее жалеть". Внезапно — это бизнес. Хорошо поставленный и отлаженный бизнес, построенный на эмоциях больших социальных групп людей, в которые эти "жалельщики" не входят. Отдельные представители этих организаций могут испытывать совершенно искренние чувства по поводу бедных зверушек, но в целом на уровне организации никто никого "жалеть" конечно не будет. Разнообразные секты и террористические организации в целом построены примерно на тех же принципах. Поговаривают, что некоторые "зеленые" в своем составе имели террористические и диверсионные подразделения, чьи акции угрожали, в том числе, жизни людей. И даже если организация преподносит себя как "ненасильственная", к ее действиям порой приглядываются.


Теперь насчет злодеев-ученых, которые "неспособны построить такую интеллектуальную карьеру". Наличие высокоразвитого интеллекта отнюдь не предполагает наличия эмпатии и признания общечеловеческой этики. Кроме того, психика человека достаточно гибкая и способна приспосабливаться. То есть, если нужно будет подавить в себе жалость и сострадание, в долгосрочной перспективе это будет сделано. А если не будет сделано, то будет сильно мешать карьере, так как затруднит или сделает невозможным проведение многих опытов. Кидать грызунов об стену никто конечно не будет. Не потому, что жалко, а потому, что смысла нет. Интеллект ведь никуда не делся, и будет нерационально уничтожать животное без получения данных, которые бы по ценности превосходили затраты на содержание грызуна. И боль "просто так" доставлять тоже нерационально. И в этом нет ничего плохого. Чтобы быть хорошим человеком, необязательно обладать эмпатией. Такие люди действительно существуют, многого добиваются и заслуживают признания и уважения.


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

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

Надеюсь, это тоже шутка была? А то вот так доказали вину, "использовали" человека, а потом окажется, что он невиновен был. Были же прецеденты.

неплохо !== идеально. И развиваться есть куда, не спорю, есть еще много мест в работе с локализациями приложений, которые нуждаются в усовершенствовании. Вопросы, вроде 1.d — решаемы, но нужны дополнительные телодвижения, чтобы был распознан контекст сообщения (https://pythonhosted.org/pymorphy/usage/django.html — когда-то использовал например, и там род можно было указать) П.3. — это не дублирование строк, это абсолютно разные термины, для которых надо пояснять, что они означают и в каком контексте используются. Про остальное в соседнем комменте вроде ответили. Что касается "удобных способов редактирования" — есть разные способы, на вкус и цвет, как говорится. Поделитесь, что и в каких инструментах не устроило?

Тексты могут храниться вместе с кодом, а могут загружаться отдельно, например по http, но пока не будем усложнять, рассматривая эту ситуацию. Вопрос только в том, как они в исходный код попадают. Допустим, в коде программист упоминает условный $t('some.term'). При отправке коммита в репозиторий запускается CI, происходит анализ исходного кода и происходит генерация или обновление файла определений переводов, который тут же отправляется в какую-нибудь систему управления переводами (например, https://weblate.org/). В этой системе переводчик (или любой нетехнический сотрудник с правом доступа) заполняет недостающие строки переводов (или обновляет имеющиеся). После каждого завершенного изменения автоматически происходит коммит в репозиторий исходного кода, несущий в себе готовый перевод. Эти файлы никто и никогда не правит вручную. Все решает автоматизация, и, таким образом, чтобы коммитить в код переводов, необязательно даже знать о существовании репозитория, да и исходного кода в целом. Это решает проблемы 1.1), 2.1) и 2.2)


Еще подобные инструменты, в случае с gettext например, могут показать информацию о том, где в исходном коде какой перевод используется (например, такой функционал есть в редакторе poedit), а также может помочь в анализе того, а нет ли таких же переводов, но с другим ключом. Возможно, это решает 2.3)? Хотя я не уверен, что правильно понял ситуацию.


Остается 1.2), решением которой может быть использование:


  • констант (объектов и строк)
  • типов (если например пишем на TypeScript)
  • и того, и другого

Совершить ошибку при использовании $t(glossary.some.term) сложнее, чем при использовании $t('some.term'), так как если в "glossary" свойство не определено, это будет видно в IDE как ошибка. Бонусом идет удобный код-комплит.


Когда и что мы говорим, всегда решается в коде, ведь именно для этого он и пишется. Просто это делается не на обычном человеческом языке, но суть утверждения от этого не меняется. А система управления переводами — как раз то место, где можно перевести это "что" на язык, понимаемый человеком (даже если перевод происходит только на один человеческий язык).


В итоге получаем то, что описано в статье (если я правильно понял ее посыл). Вариантов конкретных реализаций подобных процессов множество, я только за последние лет 5 могу вспомнить десяток проектов, где использовал разные инструменты, в зависимости от проекта, потребностей и бюджета. Больше всего мне нравится работать с gettext, как наиболее старым (первый релиз — 1990г., если не ошибаюсь), распространенным и универсальным форматом из всех имеющихся, но были и другие варианты. Так что в мире фронта и бекенда, на мой взгляд, с локализацией все обстоит достаточно неплохо.

Для frontend-а первое, что приходит на ум:



либо более специфичные для фреймворков:



Для бекенда также практически для каждого фреймворка есть возможности локализации, https://laravel.com/docs/8.x/localization, например.


Эти и другие решения существуют и развиваются уже не первый год, они замечательно выполняют свои задачи, однако приносят с собой и новые. Если нужно изменить текст "только вот этой кнопки", все равно надо подключать программиста. А еще надо постоянно контролировать процент перевода в проекте, и горе тем, у кого инструменты не могут выдать статистику. Чтобы снизить количество "мусора", упоминаемого в https://habr.com/ru/post/533980/#comment_22443216, желательно озаботиться генерацией файлов перевода из исходных кодов приложения. Кроме того, неплохо иметь референсную базу, в которой будет указано, где и как использовать самые распространенные вещи. Таким образом, чтобы все хорошо работало, нужно вводить серьезные изменения в рабочий процесс многих людей. Можно вводить меньше изменений, смириться с рядом проблем, держать в голове ньюансы.


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

Так и есть. Справедливости ради отмечу, что у арча прекрасное комьюнити и документация. Я использую Ubuntu, но с успехом пользуюсь наработками обоих сообществ.

Да, хороший пример, я кратко обмолвился ниже о "невнятности форматирования", это как раз то, что я имел ввиду. Более специализированный ESLint справляется с этим намного более предсказуемо

1

Information

Rating
Does not participate
Date of birth
Registered
Activity