Сообщество - Лига программистов
Добавить пост

Лига программистов

1 538 постов 11 434 подписчика

Популярные теги в сообществе:

Реализация Completed Date для задач в Notion

Последний год я использую Notion для ведения задач и проектов. Иногда полезно оглянуться и посмотреть, чем я занимался последний месяц или в четверг прошлой недели.

Первое, что приходит в голову добавить поле Completed At и выставлять его вручную при завершении задачи, но удобства в этом мало. Никаких готовых решений, типа вэбхука, который будет вызываться при завершении задачи и выставлять текущую дату я не нашёл.

К счастью у Notion есть публичный API, который можно использовать для этих целей. Алгоритм следующий:
- Получить все задачи изменённые сегодня и с пустым полем Completed At
- Среди полученных задач выбрать те, что в списке Done
- Выставить значение Modified At в поле Completed At

Скрипт, реализующий этот алгоритм, запускается каждый час с помощью GitHub Actions. Теперь вы можете просто добавить новое представление Done для вашей таблицы задач.

Исходники скрипта, можно найти здесь в репозитории на GitHub.

https://t.me/cherkashindev/58

Реализация Completed Date для задач в Notion Кросспостинг, Pikabu Publish Bot, Notion, Текст, Программирование, Github
Показать полностью 1

О мобилизации для IT-специалистов

О мобилизации для IT-специалистов IT, Профсоюз, Мобилизация, Длиннопост

Дисклеймер. Есть устные заявления высших представителей власти и есть указы и законы. Они различаются. Это порождает парадоксальную ситуацию, когда от военкоматов требуют руководствоваться устными заявлениями, а не нормативно-правовыми актами. В статье мы будем опираться прежде всего на нормативно-правовую базу РФ.


Что такое мобилизация?


В соответствии со ст. 1 Федерального закона от 26 февраля 1997 г. № 31-ФЗ «О мобилизационной подготовке и мобилизации в Российской Федерации» под мобилизацией понимается комплекс мероприятий по переводу экономики Российской Федерации, экономики субъектов Российской Федерации и экономики муниципальных образований, переводу органов государственной власти, органов местного самоуправления и организаций на работу в условиях военного времени, переводу Вооруженных Сил Российской Федерации, других войск, воинских формирований, органов и специальных формирований на организацию и состав военного времени


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


21 сентября 2022 г. Президент Российской Федерации издал указ о проведении частичной мобилизации в РФ.


Что такое частичная мобилизация?


Указ президента не содержит определения, что такое частичная мобилизация. С другой стороны, ФЗ №31 определяет под мобилизацией совокупность мер, нацеленных на подготовку страны к военному времени и мобилизационный призыв является одной из этих мер. Вероятно, частичной мобилизация названа потому, что относится только к призыву мобилизационного резерва на службу в армию РФ и не включает в себя других мер, которые могут проводится при мобилизации, в том числе экономических. Указ президента, а также законодательство по мобилизационному призыву не содержат никаких упоминаний о том, что призываться будут только люди с необходимой военной подготовкой, несмотря на устные заявления президента, министра обороны и пресс-службы министерства обороны.


Мобилизационный призыв


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


Мобилизационный призыв имеет гораздо меньшее количество возможных отсрочек, но ему подлежат все граждане, находящиеся в запасе (все, кто имеет военный билет, кроме категории годности Д, или мужчины старше 27 лет, статья 52 ФЗ “О воинской обязанности военной службе”). Категории граждан, кому предоставляется отсрочка от мобилизационного призыва перечислены в 31-ФЗ «О мобилизационной подготовке и мобилизации в Российской Федерации».


Согласно 9 пункту указа президента, в дополнении к категориям граждан, имеющих отсрочку по закону 31-ФЗ, отсрочку получают сотрудники ОПК. Категории граждан, которым будет предоставлена отсрочка в связи осуществлением трудовой деятельности на предприятиях ОПК и соответствующий порядок будут определены правительством Российской Федерации (возможно речь идет о гражданах, не относящихся к ОПК, но тогда не понятно, почему для них не сделали отдельный пункт).


Вопреки расхожему мнению о призывных волнах, призвать на службу могут любого гражданина РФ, находящегося в запасе. Имеется статья 53 ФЗ о воинской обязанности и военной службе, где указаны составы запаса, однако нормативки, которая определяет порядок призыва согласно распределению по составу запаса и на которую можно сослаться, если вас призвали не в ту волну —либо не существует, либо вероятней всего она в закрытом доступе.


[Могут ли призвать студента?]


Могут, если он находится в запасе — имеет военный билет (за исключением категории годности Д) или это — мужчина старше 27 лет.


UPD: в соответствии с недавним указом президента, студентам очных и очно-заочных высших учебных заведений, получающим образование впервые, предоставляется отсрочка от мобилизационного призыва


Ответственность за уклонение от мобилизации


В настоящее время не установлено какой-либо ответственности за неисполнение гражданами обязанностей, предусмотренных Законом о мобилизации, кроме как за неисполнение военно-транспортных мобилизационных обязанностей.


Статья 21.5 КоАП РФ (штраф до 3-х тысяч рублей) предусматривает ответственность за неисполнение гражданами обязанностей по воинскому учету, предусмотренных Законом о военной обязанности (необходимо встать на учет в военкомате по месту регистрации), кроме тех случаев, когда вы специально не встаете на учет, чтобы не получить повестки (тогда действует УК РФ Статья 328 п.6). Вместе с тем, в соответствии с ч.2 ст. 1 Закона о военной обязанности, в период мобилизации, в период военного положения и в военное время воинская обязанность граждан также предусматривает: призыв на военную службу по мобилизации, в период военного положения и в военное время; прохождение военной службы в период мобилизации, в период военного положения и в военное время; военное обучение в период военного положения и в военное время.


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


Таким образом, можно предположить, что даже при отсутствии специальных составов преступлений, установленных уголовным законом, при неисполнении гражданами обязанностей по мобилизации, уклонение от прохождения военной службы по призыву в период мобилизации может быть квалифицировано по ст. 328 УК РФ.


Также готовятся изменения в УК РФ, вводящие новые составы преступлений.


Важный вопрос, что считать уклонением от призыва. На текущий момент есть постановление верховного суда “от 3 апреля 2008 г. N 3 О ПРАКТИКЕ РАССМОТРЕНИЯ СУДАМИ УГОЛОВНЫХ ДЕЛ ОБ УКЛОНЕНИИ ОТ ПРИЗЫВА НА ВОЕННУЮ СЛУЖБУ И ОТ ПРОХОЖДЕНИЯ ВОЕННОЙ ИЛИ АЛЬТЕРНАТИВНОЙ ГРАЖДАНСКОЙ СЛУЖБЫ”.


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


Что ждет IT-специалистов?


На текущий момент, отсрочку от мобилизационного призыва IT-специалист может получить по следующим основаниям:


1. IT-специалист является сотрудником предприятия ОПК (указ президента, п.9);

2. на основании предоставления брони по ч.1 ст. 18 31-ФЗ о мобилизации. IT-специалисты могут быть включены в категорию граждан, кому предоставляется отсрочка.


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


С одной стороны, глава СПЧ (почему он вообще занимается этим вопросом, не ясно) заявил, что бронь должна касаться только сотрудников ОПК:


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

Пока идут споры в правительстве, Минцифры уже выпустило памятку для сотрудников аккредитованных IT-компаний, но пока бронь не примет правительство на законодательном уровне, военкоматы могут ее игнорировать.


Некоторые предприятия, которые уже подпадают под два основания и, вероятно, попадут под третье, уже пользуются своим исключительным положением на рынке.


Вот такое обращение к коллективу получили сотрудники одной из IT-компаний от ее руководителей, цитируем некоторые отрывки из него:

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

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


Недавно мы провели опрос, в котором 2% IT-специалистов указали, что получили повестку. Пожалуйста, если вы получили повестку или уже отправились отдавать долг Родине, либо вы лично знаете таких IT-специалистов —напишите нам в бот для обратной связи. Мы сейчас думаем над мерами помощи всем IT-специалистам, кто оказался в этой непростой ситуации сегодня. Что-то нам подсказывает, что такая помощь понадобится…

Показать полностью 1

Есть ли альтернатива VPN-нужен совет

Здравствуйте, нужен совет знающих. Какие есть способы работать из-за рубежа, но чтобы сервис видел у тебя российский IP. Важно, что VPN не подходит, т.к. там видно, что подключение происходит через vpn (я точно не знаю почему, но думаю, что из-за специфичных серверов). Например, Кинопоиск так и говорит, что вы находитесь в другой стране или в матрице, хотя на speedtest видно, что сервер российский.

Мне же нужно, чтобы сервис считал, что я обычный пользователь из России, а не хитрый жук с VPN.

Заранее спасибо всем :)


UPD: спасибо за советы! Разобрался с вопросом. Поднял виртуальный сервер.

Для этого воспользовался первой страничкой гугла :)

Сервер стоит 6 руб. в день, оплата картой Тинькофф.

Все работает.

При проверке соединения видно, что я в России, но не через выделенный сервер сижу, а как простой работяга :)

Кинопоиск тоже работает:)

P.S. Я не ИТ, поэтому процесс у меня занято часа два.

P.P.S. Делал все через iphone

Кто недавно CS50 проходил, не являясь студентом Гарварда, у вас их IDE работала?

Кто недавно CS50 проходил, не являясь студентом Гарварда, у вас их IDE работала? Программирование, IDE, C++, IT, Компиляция, Cs50, Обучение, Вопрос, Гарвард, Мат

Ууууух, блэт! Качественно намудохался с их средой, и так и не нашёл актуальные команды к терминалу.


Написал прогу Хало Ворлд из третьей лекции от 2015 года, тут же решил сохранить и скомпилировать её через make. Хуй там! В ответ появился вопрос Did you type helloword.c? Эмм... Почему-то в демонстрации у гарвардского препода такой проблемы не было. Вспоминая, как он в другой ситуации просто ввёл букву y, чтобы дать положительный ответ, повторил за ним. Терминал команду не понял. От нефиг делать написал слово полностью - yes. Терминал лёг, спамя буквой y.

Кто недавно CS50 проходил, не являясь студентом Гарварда, у вас их IDE работала? Программирование, IDE, C++, IT, Компиляция, Cs50, Обучение, Вопрос, Гарвард, Мат

Благо, в лекции показали староверскую версию команды - clang. Один хуй, компилятор не завёлся.


Я пробовал сохранять файл и через выпадающее меню. Файл-то сохранился, но компилятор от этого работать не стал - терминал не находит его


Теперь думаю, ну нахой этот CS50, пойду качну нормальную оффлайн IDE и книгу Кернигана\Ритчи.

Показать полностью 1

На будущее

У меня вопрос. Берут ли стажёром в Яндекс без it образования? Или если без образования, скажут чтобы прошёл их платные курсы и только потом возьмут? Я вот сейчас самостоятельно это всё изучаю (совсем недавно начал), курсы платные не хочу брать, да и денег на них нету. И вообще стоит идти в Яндекс?
А ещё такой вопрос. Несколько озадачивающий, мне задали. Там написано, что проживание в Москве оплачивают.

На будущее IT, Вопрос, Помощь, Программирование, Яндекс

Так вот, если я провалю стажировку, потребуют ли с меня деньги? O_o Типа, частники не станут просто так тратиться без выгоды, такой щедрости не бывает. Если провалишься, то потребуют всё возместить. (Можете попытаться угадать, кто такое сказал, это не сложно. Подсказка: 4 буквы)

IT для гуманитария

Всем привет. Как вы поняли, у меня гуманитарный склад ума и я не дружу с математикой. Всегда думала, что IT точно не для таких, как я. Но увидела статью, что это не совсем так, оказывается работают и довольны(статья была о двух людях, перешедших во Frontend) По образованию я психолог, но работать по специальности не хочу. В IT я полный 0(( Стоит ли вообще лезть в эту сферу в моей ситуации(английский я не знаю, или придется выучить?) или это будут зря потраченные деньги, время и нервы? Если шансы есть, то какие профессии подойдут в моем случае? Какие курсы(с нуля, желательно по адекватной цене), книги, форумы для обучения выбрать и с чего вообще начинать?

Где взять бесплатный англо-русский словарь для использования в своем приложении?

Понадобился мне простой англо-русский словарь для кое-каких личных говнокодерских нужд. На первый взгляд проблема не большая - сейчас огромное количество не то что там словарей - полноценных переводчиков. Google, Yandex, Abby и другие предлагают свои решения, да еще и бесплатные до определенного количества запросов в сутки.


Казалось бы, бери любой и радуйся, за пределы бесплатного лимита вряд ли выйдешь. Но есть одно НО. Вот пункт из условий использования словаря яндекса:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

А это именно то, что я хотел делать. Обрабатывать, сохранять и видоизменять полученные через севис данные. И такой пункт, практически слово в слово встречается во всех популярных словарях и переводчиках. Пичалька. Поэтому вариант со словарями от больших парней отпал.

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

Пошерстив форумы, я во-первых, понял что я не один такой, кто ищет бесплатный словарик и во-вторых наткнулся на несколько словарей,  которые распростаняются либо под лицензией GNU GPL, либо вообще без упоминания каких-либо лицензий.


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


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


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

Выглядит это так:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

Или так:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

С этим и начал работать.


Итак, что я хочу получить?

1. Нужен ресурс, api, куда я смогу отправить запрос с указанием слова целиком или его части, и получить ответ со всеми словами начинающимися на эту строку + переводы.

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

3. Табличка должна быть определена следующим образом:

source - исходное слова на английском

pos - part of speech - часть речи

transcription - транскрипция

translations - массив переводов для одного значения текущей части речи.

Заабегая вперед покажу, что вышло в итоге вышло и как выглядит.

Вот, например, слово mail.

Табличное представление:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

API отдает так:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

Стэк: php 8.1 + symfony 6.1 + api platform + postgres 13.3 + docker


Теперь опишу самое интересное - процесс парсинга словаря.


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

Причем наличие всех элементов не обязательно.


Слово mail, например, содержит все возможные элементы, а слово password содержит минимально возможный набор элементов для определяния слова и его перевода. А слово passport содержит 2 варианта перевода, но одно значение и одну часть речи.


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


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


1. Исходное слово (source) - слово которое и переводится. Во всех случаях стоит в самом начале. Может содержать несколько слов.


2. Значения - разные значения одного слова. Например mail может иметь значение кольчуга, а может почта. Если значений у слова несколько, то они обозначены римскими цифрами.

Значения всегда идет сразу после итсходного слова


3. Транскрипция  (transcription).  Идет либо после исходного слова, либо, если значений больше одного, после римской цифры. Определяется внутри значения.


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

Не обязательный элемент. Если присутвствует, то идет после транскрипции.


5. Часть речи - part of speech (pos) - части речи внутри одного значения. Например слово mail в рамках значения "почта" может быть существительным и иметь значение собственно "почта", а может быть глаголом и иметь значение "посылать по почте".

Если частей речи больше одной, то обозначаются они арабской цифрой с точкой. Идут после транскрипции.


6. Переводы (translations) - варианты перевода слова в рамках одного значения и одной части речи. Например слово mail, как существительное может иметь переводы "почта, корреспонденция, мешок с почтой" в рамках одного значения и "кольчуга, скорлупа" в другом.

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


Если наложить объяснения выше на пример слова mail из словаря, то полчим следующее:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

Кроме описанных выше базовых принципов есть еще несколько вещей, на которые стоит обратить внимание.


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

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

При переводе словаря в электронный вид пострадала транскрипция. Вот, что по этому поводу написано на сайте:

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

И последнее на что я обратил внимание перед парсингом: части речи обозначенны как _n., _v., _a. и т.д. Это не очень информативно для человека, поэтому подобное обозначение нужно будет заменить на понятные noun, verb и тд.


Это все особенности на которые нужно обратить внимание и проблемы, которые нужно решить, чтобы перевести этот словарь в формат, который я описал выше.

Естественно, есть еще некоторые вещи, которые могут броситься в глаза: пометки в переводах вроде _зоол., _шотл. и так далее, некоторые примеры использования слов внутри массива translations будут разбиты по запятой и др. Все это я решил пока оставить как есть и подумать об этом позже.


Задачи поставлены, проблемы обозначены. Далее - решение.

Такую комплексную задачу решить сходу не так-то просто. По крайней мере для меня.

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

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


1. Чтение из файла.

Читать файл построчно и извлекать слова из него в массив. Слова сверху и сниху ограничены строкой "_____". Результат - массив с набором необработанных слов-строк выглядит примерно так:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

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


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

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

2. Определение source - исходного слова

Слово, которое переводится. Начинается с начала строки и заканчивается там, где начинается описание значений. Описание значений начинается либо с транскрипции, если значение одно, либо с римской цифры I, если значений много. Т.е. исходное слово длится до последовательности символов " [" либо " I [".

После выполнения этого шага в памяти появляется переменная $sourceWord.

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

2.1. Удаление уже определенной части из строки

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

На этом этапе получаем строку со значениями $meaningString.Далее будем работать с ней.

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

2.2. Разбитие строки на значения

Как было объяснено выше - слово может иметь несколько значений. Описание значений, если их несколько, начинается с римской цифры I, II, III, IV и тд.

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

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

3. Определение значений

Значений может быть разное количество, но не меньше одного, поэтому $meanings всегда массив. А это значит, что перебираем его в цикле. Все значения $meanings обрабатываются по одному алгоритму.

Содержимое памяти на первой итерации цикла по массиву значений выглядит так:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

3.1. Определение транскрипции

Транскрипция с точки зрения парсера - часть с начала строки, заключенаая в квадратные скобки. На этом этапе нахоидим транскрипцию и откусываем ее от строки  $meaning.

Содержимое памяти после этого шага. Обратите внимание на переменную $meaning. В отличнии от предыдущего шага - траскрипции там уже нет.

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

4. Определение частей речи

С частями речи тот же принцип, что и с значениями - их может быть несколько, но не меньше одной. Обозначаются части речи арабской цифрой с точкой, если их несколько и не обозначаются цифрой никак, если часть речи одна.

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

Получается следующее:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

2 части речи (_n. - noun - существительное и _v. - verb - глагол) - 2 элемента в массиве $partsOfSpeech.


4.1. Прасинг части речи

Запускаем цикл по массиву частей речи и на каждой итерации работаем с одной частью речи за раз.На первой итерации память выглядит так:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

4.2. Определение названия части речи

Тут все уже знакомо по предыдущим пунктам. Часть речи - это подстрока с начала строки, которая начинается на нижнее подчеркивание (_) и заканчивается точкой (.). Так же после определения названия откусываем результат от исходной строки.

Память выглядит так:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост
5. Определение переводов

Наканец-то подошли к кульминации - определению переводов слова. Переводы могут иметь несколько значений внутри одной части речи + несколько синонимов.

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

Выглядит это следующим образом:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

6. Сохранение результата

Если взглянуть на содержимое памяти в данный момента, то станет понятно, что сейчас там хранится все необходимая информация для получения первого слова. А точнее первого значения, части речи "существительное" слова mail. У нас есть $source, $transcription, $pos, $translations. Осталось сохранить эти значения в структуру данных и добавить ее в $result.


После всех описанных манипуляций массив $result содержит одно значение:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

Одно значение - неплохо, но у слова mail есть еще значения и части речи. Что с ними? Прелесть в том, что описанный процесс одинаков для парсинга любого слова из исходного словаря. Все итерации повторяются для каждого из элементов массивов $partsOfSpeech и $meanings.

После разбора всех значений и частей речи результат будет следующий:

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

Как видим, в нашем варианте слово mail содержит 4 варианта перевода с рзаными частями речи + синонимы.

На этом парсинг слова именно как строки закончен.

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

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

Некоторые из описанных проблем уже решены, некоторые пока еще нет.

Тем не менее считаю, что определенный результат достигнут .

Где взять бесплатный англо-русский словарь для использования в своем приложении? IT, Программирование, Программист, Длиннопост

Пример того, как в конечном результате выглядит слово  mail можно было видеть в этом посте выше (там где показываю табличное представление слова и ответ от API  в формате json)


Желающие могут скачать словарь в формате csv и sql

Совсем отчаянные могут посмотреть исходный код парсера + поднять свое API словаря. Репозиторий тут.


Спасибо за внимание!

Показать полностью 23

Друг познается в чате

«Чат на чат» — новое развлекательное шоу RUTUBE. В нем два известных гостя соревнуются, у кого смешнее друзья. Звезды создают групповые чаты с близкими людьми и в каждом раунде присылают им забавные челленджи и задания. Команда, которая окажется креативнее, побеждает.

Смотрите выпуски шоу только на RUTUBE!

Реклама ООО «РУФОРМ», ИНН: 7714886605

IT Рекрутинг

- Уважаемый КотНинзя, у нас сегодня техинтервью, всё в силе
- Да.

Вы пробовали собеседоватья, когда болеет вся семья. Маленький ребёнок, плохо спит. Жена, конечно принимает основной удар, но побочный ущерб все равно есть.

- Приветствую. Я техлид компании Х меня зовут Ъ
- Здравствуйте.

- У нас две секции на собеседование. Алгоритмы и теоретическая часть. Какую будем проходить.
- Знаете я не силён в алгоритмах, поэтому давайте начнём с неё чтобы меня поскорее отсеять.
- Интересный у вас настрой


Текстовое поле. Задача из LeetCode Перевести число времён Сенеки в обычное число. Вот условие. Давай пиши код.

- Знаете Ъ, я решал подобную задачу. Только недавно и могу рассказать вам моё решение и самое рейтинговое решение.

Рассказываю.


- Да, похоже у вас есть опыт решения задач на LeetCode давайте перейдем к теоретической секции.

В голове мелькает, что это в принципе единственная задача что решал на ЛитКоде и та была замучена за пол дня в рамках подготовке к собеседованию в Авито. Собеседование, то я завалил, алгоритмическую часть так и не прошёл. Слишком долго решал, "Скользящие окна" вот этот вот всё.

- Назовите несколько примеров структур данных.

В голове проносится 40 страницы книжки "Грокаем Алгоритмы".  Ну давай же Адитья Бхаргава. Помню, что-то там про задачу коммивояжёра, но дальше не читал на практике особо не пригождалось.


- Массив, Связанный список, Хеш таблица.

-Отлично. К какому типу ближе всего ассоциативный массив.


Так думаем, знатоки минута пошла. Вряд-ли это просто массив. Связанный список не подходит. Элементы расположены в памяти друг за другом. Значит...


- Ближе всего Хэш таблица.
-Да правильно ближе Хеш таблица.


Очко уходит знатокам, думаю я.


- Чем отличается стек от очереди.


Мелькают какие-то прочитанные статьи на хабре о структуре данных. Автор на сей раз русский но безымянный.


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

- Наоборот. Исправляет мою ошибку интервьюер.

- Блин, точно. Наоборот.


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


- Что выполняет функция  fastcgi_finish_request().

- Не знаю. Никогда не использовал. Может позволяет прерывать выполнение кода?
- Нет. Позволяет прерывать запрос и вернуть данные клиенту. Используется в highload проектах.


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


Очко уходит телезрителям. Кажется команда Блинова, проиграла и надо бы плакать углу.
- А что вы скажете phpfpm


Вспоминаю вечера проведенные за компьютером в настройках сервера. Многочисленные мануалы как поднять окружение. В этот раз отвечает Александр Друзь. Бьет гонг. Очко знатокам.


- Что есть функциональное программирование. Чёрный ящик злорадно ухмыляется и уносит очко и деньги жителю города Haskel


Время вышло, игра окончена - результат вы узнаете позже.


Что ж это была хорошая игра.
Искренне ваш Senior Full Stack Overflow

Показать полностью
Отличная работа, все прочитано!