Pull to refresh
266
0
Арсений@aruseni

Lead Python Software Engineer

Send message

Двухдневный бесплатный доступ к курсам Code School

Reading time1 min
Reach and readers38K
Code School — это проект от Envy Labs, в рамках которого реализовано уже около 30 онлайн-курсов по различным технологиям и языкам программирования.

Rails for Zombies
Процесс обучения сводится к просмотру видеороликов и повторению изученного, при этом все упражнения выполняются непосредственно в браузере. Обучение достаточно сильно геймифицировано: для перехода к следующему уровню нужно обязательно выполнить упражнения из предыдущего, причём за выполнение упражнений начисляются очки, а на вашу публичную страницу добавляются значки (badges).
Читать дальше →

Команда sponge: «губка» для стандартного ввода

Reading time3 min
Reach and readers13K
Все мы знаем, что при выполнении команд в шелле мы можем перенаправлять стандартный вывод на стандартный ввод других команд, а также записывать его в файл.

Это достаточно детально описано в главе I/O Redirection в «Продвинутом руководстве по программированию на Bash» (Advanced Bash-Scripting Guide).

В частности, иногда бывает так, что вам нужно прочитать какой-то файл, как-то его обработать (например, выбрать оттуда только те строки, которые подходят под некое регулярное выражение), и затем записать результат в тот же самый файл. Допустим, ваш файл называется «messages.log», и вы хотите оставить в нём только те строки, которые начинаются со слова «Success», двоеточия и пробела (а все остальные строки убрать).

Можно предположить, что для этого подойдёт такая команда:

grep "^Success:\s" messages.log > messages.log

Но это предположение окажется неправильным — при выполнении этой строчки файл messages.log будет открыт на запись и очищен ещё до того, как grep начнёт его просматривать.
Читать дальше →

Как за одну минуту восстановить текст после неудачной отправки веб-формы

Reading time3 min
Reach and readers121K
Бывало ли когда-нибудь так, что вы набирали в браузере длинный и интересный текст, внимательно вычитывали его, и тут, буквально через мгновение, понимали, что при обращении к сайту произошла ошибка, а ваш текст в форме был стёрт?

В основном такое бывает из-за невнимательности разработчиков сайтов (под разработчиками я в данном случае подразумеваю не только программиста, который мог не знать о нужном способе, но и, например, менеджера, который посчитал, что тратить на это время слишком нецелесообразно): современные веб-технологии (например, Web Storage) позволяют сохранять и восстанавливать данные (в том числе данные форм) при почти любых обстоятельствах — вплоть до случайного закрытия браузера.

И, тем не менее, вы писали длинный текст именно там, где ничего для сохранения данных формы не сделано.

Можно ли теперь как-то восстановить данные, если вы не можете скопировать текст из формы и не можете отправить POST-запрос повторно?

Не закрывайте браузер!
Решение есть

Django: Генерируем безопасные отчёты об ошибках на сайте

Reading time5 min
Reach and readers9.2K
Как известно, в Django предусмотрен очень лёгкий и простой механизм уведомления разработчиков о возникающих проблемах. Когда проект развёрнут на локальном компьютере и в настройках DEBUG имеет значение True, то отчёты об ошибках просто выводятся в виде HTTP-ответа, в виде удобной страницы с возможностью копирования traceback'а.

Если же это production-сервер, и DEBUG имеет значение False, то отчёты по умолчанию отправляются по электронной почте всем, кто указан в настройке ADMINS (кстати, если вы используете SMTP-сервер, то письма могут не приходить, так как SMTP-сервер не принимает адрес root@localhost — в этом случае просто укажите любой другой адрес, который будет принимать ваш SMTP-сервер, с помощью настройки SERVER_EMAIL).

Разумеется, ничего не мешает также написать свой logging handler (обработчик журналирования) и сохранять отчёты об ошибках в любом нужном виде — создавать задачу в баг-трекере, например.

Тем не менее, если для вас важна безопасность ваших пользователей, то возникает вполне закономерный вопрос — как сделать так, чтобы отчёты об ошибках были для них безопасны? То есть как сделать, чтобы никакая личная информация в них не сохранялась, и не отправлялась кому-либо по почте (ведь дело даже не в том, что кто-то из разработчиков может вести себя недобросовестно, а скорее в том, что подобную информацию вообще лучше не сохранять где-либо за пределами сервера — ведь почтовый ящик и взломать могут, а сервер обычно защищён лучше).
Читать дальше →

Сколько вы пожертвовали при загрузке Ubuntu 12.10?

Reading time1 min
Reach and readers19K
Уже примерно три месяца при загрузке Ubuntu всем пользователям предлагается перед скачиванием отправить Canonical некоторую сумму денег (по умолчанию 16 долларов).

При этом пользователи могут сами выбирать, на что именно они хотели бы перевести деньги (по умолчанию у всех 8 вариантов выбрано по два доллара). Выбрав некоторую сумму денег, пользователь видит, с чем эту сумму можно сравнить (например, сумма в 30 долларов сравнивается со стоимостью сковородки из нержавеющей стали с медным дном, а сумма в 500 долларов сравнивается со стоимостью авиабилета из Нью-Йорка в Лондон, в одну сторону).

Високосные годы

Reading time3 min
Reach and readers64K
Надеюсь, вы отлично встретили новый год, и сейчас у вас отличное праздничное настроение. По крайней мере у меня это именно так — мы не пили никакого алкоголя, и чокнулись в полночь бокалами с водой из пятилитровой канистры, поэтому мы проснулись, погуляли, и тут я вспомнил одно из вчерашних поздравлений с Новым годом:

Желаю, чтобы в конце каждого года ты, вспоминая то, что было за последние 366 if ((year%4 == 0 and year%100 != 0) or (year%400 == 0)) else 365 дней, думал про себя:

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

Итак, выше достаточно простой inline-способ определить количество дней в году (переменная year), который, по сути, полностью раскрывает их суть: в григорианском календаре високосными годами считаются те годы, порядковый номер которых либо кратен 4, но при этом не кратен 100, либо кратен 400. Иными словами, если год делится на 4 без остатка, но делится на 100 только с остатком, то он високосный, иначе — невисокосный, кроме случая, если он делится без остатка на 400 — тогда он всё равно високосный.

Например, 2013 год невисокосный, 1700, 1800 и 1900 — опять же невисокосные годы, а вот 2000, 2004, 2008 и 2012 — високосные.

Но что, если мы не помним, сколько дней в високосных (366 дней) и невисокосных (365 дней) годах, или просто хотим написать определение количества дней в году максимально быстро? Можно ли сделать так на Python? Конечно же, можно.
Читать дальше →

Unity Web API, или как сделать интеграцию вашего сайта в Ubuntu

Reading time5 min
Reach and readers9.8K
В ноябре компания Mozilla выпустила Firefox 17. В релизе, помимо прочего, появилась поддержка так называемого Social API. Этот API позволяет социальным сервисам (тем, где фигурирует постоянное взаимодействие с другими пользователями) удобным для пользователя способом привлекать его внимание даже тогда, когда у него открыта другая вкладка с другим сайтом. Более того, присутствует возможность добавлять в браузер свой sidebar (боковую панель) и всё время отображать там что-то, вне зависимости от того, какая вкладка открыта у пользователя на данный момент (внешне это чем-то напоминает фреймы, которые раньше очень много использовались на многих сайтах для того, чтобы отдельно отобразить основное содержимое, и независимо от него отобразить отдельную боковую панель).

Сами разработчики браузера говорят, что такое API для взаимодействия с браузером необходимо социальным сетям и подобным интерактивным веб-приложениям, поскольку такие сайты для пользователя являются чем-то бо́льшим, чем «ещё одна вкладка» в браузере. И поэтому они решили добавить возможность двустороннего взаимодействия (то есть инициирующей стороной может быть как пользователь, так и сайт) пользователя с сайтом в течение всего того времени, когда у пользователя запущен браузер (то есть у пользователя может не быть ни одной открытой вкладки с сайтом, и при этом он может видеть информацию о новых сообщениях или даже использовать сайдбар, который отображается при просмотре любых страниц любого сайта).

Тем не менее, хотя в блоге Mozilla и пишут о том, что ожидается поддержка большего количества провайдеров («провайдерами» в контексте Social API называют те веб-приложения, которые предоставляют браузеру специальный структурированный текстовый файл, где указывается, какие возможности Social API приложение хочет запросить), а Facebook — это первый поддерживаемый провайдер, там не упоминается тот факт, что даже те веб-разработчики, которые хотят добавить поддержку Social API для своего сайта, сейчас сделать этого не могут. Вернее, конечно, могут, но для этого всем пользователям, которые захотят ей воспользоваться, будет необходимо открыть about:config и вручную добавить адрес сайта в параметр social.activation.whitelist (по умолчанию там задан один-единственный сайт: https://www.facebook.com).
Читать дальше →

WebSocket-чат на Tornado для вашего Django-проекта

Reading time28 min
Reach and readers68K
TornadoНедавно я запустил сайт backgrounddating.com и написал об этом здесь, на Хабрахабре. Разумеется, я уже тогда рассказал о некоторых технических деталях реализации этого проекта, но об одной из возможностей сайта я бы хотел написать отдельно, тем более, что документации (как на русском, так и на английском) на эту тему в Интернете пока что довольно мало. Итак, речь пойдёт о чате в реальном времени между двумя пользователями. Задача состоит в том, чтобы любой пользователь мог отправлять другим пользователям сообщения, и, если у получателя сообщения открыт чат с этим пользователям, то он сразу же видел входящие сообщения (а в ином случае он мог прочитать сообщения позже: то есть при открытии чата загружается история последних сообщений).

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

Сразу уточню, что это не единственный способ реализовать подобное. Вы можете использовать другой асинхронный веб-сервер (например node.js), можете использовать другую очередь сообщений (или вообще её не использовать, если вам подходят особенности такого варианта: с пользователями одного канала обязательно общается один и тот же worker веб-сервера). Я даже не утверждаю, что этот вариант самый лучший (но в данном случае он подошёл лучше всех). В конце концов, мы здесь вообще не будем рассматривать костыли (long polling, Flash) для старых браузеров (а это почти все версии IE, например), не поддерживающих веб-сокеты, и даже не будем рассматривать возможность подключаться из тех браузеров, которые уже поддерживают протокол WebSocket, но не стандартизированную версию (RFC 6455), а одну из устаревших. О том, как можно включить поддержку устаревшей версии «draft 76» (она же «hixie-76»), смотрите в документации Tornado.
Читать дальше →

Background Dating — в поисках людей, с которыми интересно говорить

Reading time4 min
Reach and readers16K
Итак, я давно хотел написать сайт знакомств, но при этом совершенно не хотелось, чтобы он был таким же, как и сотни других. В итоге стало ясно, что это должен быть не совсем сайт знакомств, а скорее некое место, где можно находить интересных людей. С другой стороны, не хотелось ограничиваться какой-то конкретной категорией людей, поэтому вариант создания тематического сайта не рассматривался. В итоге получилось то, что вы можете видеть по ссылке. Сразу можно обратить внимание на то, что не предлагается заполнять какие-либо анкетные данные. Не потому, что их нужно заполнить после регистрации, а потому что анкет на сайте нет.

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

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

А вот, кстати, и описание в «рекламном» стиле:

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

Теперь у вас появилась такая возможность — если, конечно, она уже зарегистрировалась на Background Dating. :)
Читать дальше →

ЦБ РФ намерен обязать пользователей интернет-банкинга предоставлять информацию об IP-адресах всех их устройств

Reading time2 min
Reach and readers22K
Уже довольно давно на сайте ЦБ РФ опубликован PDF-документ, содержащий проект указания о внесении изменений в Положение Банка России от 19 августа 2004 года N262-П «Об идентификации кредитными организациями клиентов и выгодоприобретателей в целях противодействия легализации (отмыванию) доходов, полученных преступным путем, и финансированию терроризма».

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

Неизвестно, правда, каким образом они предлагают реализовать проверку MAC-адреса, как можно указать IP-адрес в том случае, если он выдаётся провайдером динамически, и что делать тем, кто пользуется интернет-банкингом из разных мест (дома, в офисе, в кафе, в аэропортах и так далее).
Читать дальше →

Написание музыки в Linux: что есть прямо сейчас

Reading time9 min
Reach and readers131K
Недавно я прочитал о том, что Гэйб Ньюэлл всерьёз настроен на то, чтобы перенести хорошие и качественные игры в Linux. Как он считает, это именно то, чего не хватает, и что на данный момент ограничивает развитие платформы. Безусловно, он прав. Тем не менее, лично для меня есть и другая область, которая мне даже намного важнее, чем игры — это музыка. Если без игр я могу обойтись, то музыка для меня необходима — как, впрочем, и для многих других людей.

Рабочее место Niels Ott
На картинке ­— рабочее место Niels Ott, на компьютере запущен Ardour.

Моя жена тоже музыкант, и когда она увидела, какие секвенсоры и синтезаторы есть в Linux — она даже не стала пытаться в них разобраться, просто вернувшись к своим Cubase и Reason. На её ноутбуке есть Windows 7, и когда она пишет музыку, она просто перезагружается туда и запускает там эти программы.

Я же, пользуясь Linux уже около 10 лет, не могу так просто отказаться от того, чтобы хотя бы пробовать имеющиеся программы. В принципе, могу точно сказать, что за 10 лет всё очень сильно изменилось в лучшую сторону. И всё же то, что сейчас есть под Linux для написания музыки, очень далеко от идеала. Давайте вместе разберёмся, почему бо́льшую часть музыки всё ещё пишут на Mac OS X или Windows.
Читать дальше →

Некоторые особенности Django, о которых хорошо знать заранее

Reading time5 min
Reach and readers14K
Django

Django — это прекрасно. В самом деле: если писать о том, как много хорошего появилось в мире с приходом и развитием Django, то можно писать очень долго, и всё равно не рассказать обо всём. Лично я на данный момент постоянно использую Django уже четыре с половиной года, и всё это время Django становилась всё лучше и лучше.

И всё же в какой-то момент понимаешь, что в документации есть не всё. И тут варианты решения задач появляются разные — можно открыть исходники Django, можно посмотреть, что пишут по этому поводу на Stackoverflow и в других местах (часто очень помогают списки рассылки, а также официальный Trac), но ещё лучше — всё это вместе.

Давайте рассмотрим всего несколько примеров того, что может понадобиться в повседневной работе, но чего (пока что) не прочтёшь в официальной документации. Впрочем, если вы считаете, что нужно добавить ещё что-то — пишите, может быть, это действительно так.
Читать дальше →

Засеки 25 минут!

Reading time2 min
Reach and readers5.4K
Как часто вам бывает нужно просто засечь время? Я думаю, что такая необходимость периодически возникает у всех. Кто-то просто смотрит на часы, кто-то использует специальные программы, кто-то ставит будильник на телефоне.

Но помимо всех этих способов можно ещё сделать вот так:

sleep 25m ; xmessage 'Hey! :)'

Всего две команды, которые довольно легко запоминаются.

Вместо xmessage может быть, разумеется, что угодно ещё. Например:

sleep 8h 30m ; mplayer /home/user/Music/pink_floyd-the_happiest_days_of_our_lives.flac

Впрочем, тут надо учитывать, что команда не будет выполнена, если вы закроете терминал. Если же необходимо, чтобы команда всё-таки выполнилась, то есть несколько способов это сделать.
Читать дальше →

Абсолютный успех народного финансирования: Pebble собрали 10 миллионов долларов за один месяц

Reading time2 min
Reach and readers13K
Pebble — это электронные часы, построенные на технологии электронной бумаги. Они не только умеют показывать дату и время — они могут связываться по Bluetooth (в том числе 4.0) с вашим телефоном (iPhone или Android) и отображать большое количество разной информации: погоду, имя звонящего, приходящие SMS-сообщения (только для Android), сообщения в Twitter, электронную почту, GPS-информацию (в частности, текущую скорость) и многое другое. Сами пользователи могут писать для Pebble приложения, которые как угодно могут расширять возможности этих часов. Можно выбрать одну из многих тем оформления, или создать свою собственную. Экран часов отлично видно на солнце, но у них также есть подсветка (для тёмного времени суток), одной зарядки хватает примерно на неделю.



Применений таких часов придумано уже очень много. Вы можете управлять музыкой, можете посмотреть, кто звонит, не доставая мобильный телефон (мало ли — руки грязные, ещё что-то), можете прикрепить часы к велосипеду и использовать как спидометр, а можете просто запустить таймер, и, периодически поглядывая на часы, точно знать, сколько прошло времени с того момента, когда вы поставили вариться рис. :)

Стоимость этих часов — 150 долларов. Если только не… сделать предзаказ. До этого момента Pebble можно было приобрести, вложив определённую сумму в проект на Kickstarter. По сути, это ничто иное, как предзаказ (часы будут примерно в сентябре) с очень хорошей скидкой. И желающих вложить деньги заранее нашлось очень много. Всего вложились таким образом 66 388 человек. Собранная сумма составляет $10,166,046.
Читать дальше →

Granny’s Dancing on the Table — новый фильм под Creative Commons

Reading time2 min
Reach and readers1.3K
Granny’s Dancing on the Table

Несколько лет назад произошло весьма значимое событие в истории кинематографа и движения за свободное распространение информации — Hanna Sköld сняла первый в мире полнометражный фильм, распространяющийся на условиях лицензии CC-BY-NC-SA («вирусная» лицензия Creative Commons, запрещающая коммерческое использование) — Nasty Old People.

Тот фильм был снят на частный кредит на сумму 10 000 евро, взятый в банке. Кредит уже удалось отдать — 7500 евро было получено от шведского телевидения (это меньше, чем этот канал обычно платит за шведские фильмы, но всё равно приличная сумма), и примерно столько же дали пожертвования.

Но на этот раз у Ханны более серьёзные планы — она снимает ещё более масштабный фильм. Он называется «Granny’s Dancing on the Table» и на него требуется 50 тысяч долларов. Деньги она собирает с помощью Kickstarter. Попросту говоря, это означает, что если 1 июня нужная сумма будет собрана, то она будет списана с тех, кто вложился. Если будет собрано меньше, чем нужная сумма — то финансирование проекта отменяется (то есть никто не потеряет деньги, если не наберётся достаточно). На данный момент вложено $6 688.

Ханна планирует выпустить фильм одновременно в кинотеатрах и бесплатно, для свободного скачивания, в Интернете.
Читать дальше →

Новая технология для полностью экологичного получения электричества

Reading time12 min
Reach and readers25K
Все мы много раз задумывались над тем, откуда берётся то самое электричество, благодаря которому возможна работа твоего компьютера, Интернета, огромного количества всевозможного оборудования, и, конечно, Хабрахабра.

Сейчас у нас есть ТЭЦ, АЭС, ГЭС и довольно большое количество других технологий получения энергии. У большей части из этих технологий есть очень существенные недостатки — это либо значительный вред окружающей среде, либо расход медленно возобновляемых природных ресурсов, либо низкая эффективность. Некоторые технологии кажутся почти идеальными, но только до того момента, пока не знаешь их стоимость.

Но что, если бы у нас появилась возможность найти такой способ получения энергии, который не имел бы всех этих недостатков? И что, если бы он также давал дополнительные преимущества, такие как, например, чистая питьевая вода? И если бы он стоил около ста долларов (около трёх тысяч рублей) на человека и всё необходимое оборудование при этом имело бы очень длительный срок эксплуатации (то есть заплатив единожды $100 можно было бы много лет не задумываться о счетах за электричество и воду), а установить такой комплекс можно было бы в любом месте на Земле?

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

(Девочка на картинке неодобрительно смотрит на тех, кто не хочет ничего слышать.)

Фотография

Читать дальше →

Сервис для поиска похожих людей

Reading time4 min
Reach and readers202K
Представьте себе ситуацию. Вы увидели где-то в Интернете некую барышню, и она вам очень понравилась. Если говорить точнее — вообще-то, вам понравилась её внешность: как минимум, вы не знаете её запах, поэтому ничего не знаете об её MHC — а с биологической точки зрения это ох как важно (вот ещё видео). Да и, скажем прямо, помимо внешности и MHC будут и другие критерии, которые в итоге определят, насколько вам она действительно нужна. И тем не менее, внешность показалась вам не просто хорошей, а идеальной — возможно, вы даже когда-то уже видели какую-то барышню, похожую на эту, и уже испытали тогда примерно те же чувства.

Фотография

В общем, как бы то ни было, внешность вам очень понравилась, но конкретно эта девушка вам почему-то не подходит. Может, она суперзвезда, и вы ей не слишком интересны, может быть, она замужем, а может быть вы просто не хотите пока переезжать туда, где она живёт (мало ли). И вы задаётесь вопросом — а единственная ли она из тех, кто сочетает все те 512 критериев внешности, которые вы рассматриваете как идеальные. Вообще-то, наверно, нет — вы ведь уже видели такую девушку раньше, помните? Но стоп, а с ней-то вы вообще не знакомы (может быть, вы видели её в метро или на улице, но почему-то так и не познакомились с ней).
Читать дальше →

Опыт перевозки компьютера на самолёте

Reading time4 min
Reach and readers265K
Я много раз летал на самолётах, и несколько раз, в частности, вёз с собой компьютер. В части случаев это был только системный блок, в другой части случаев — системный блок с монитором (NEC, 23", вместе с ножкой).

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

Если речь идёт о перевозке ноутбука, то тут всё проще — достаточно положить его в сумку, и надеть её на плечо. Тут же речь пойдёт именно о большом, настольном компьютере.
Читать дальше →

Звонки по номерам, написанным на сайте

Reading time2 min
Reach and readers5.9K
Я сегодня думал над тем, как можно упростить довольно привычное действие: позвонить по телефону, который написан на сайте. И в голову пришла такая идея — почему бы не делать так, чтобы при наведении курсора мыши на номер телефона отображалась всплывающая подсказка с QR-кодом, который можно тут же считать с помощью телефона, и сразу звонить, не переписывая номер вручную.

Скриншот страницы

Причём записывать в таком QR-коде можно не только номер, но и различную вспомогательную информацию — такую как адрес электронной почты, имя человека, и прочее — всё, что позволяет записать vCard. Таким образом пользователь может либо позвонить сразу, либо записать номер в адресную книгу, для того, чтобы иметь возможность позвонить позже. В адресную книгу контакт сразу будет записан со всей дополнительной информацией, которая потребуется, чтобы потом найти его.
Читать дальше →

Обычная (или не совсем обычная) транслитерация на Python

Reading time7 min
Reach and readers44K
Как-то раз возникла необходимость написать транслитерацию на Python — из кириллицы в латиницу. Из слова «ситх» получается «sith», а из «шелест» выходит «shelest».

Казалось бы, чего тут вообще писать — задача едва сложнее print "Hello world". И это отчасти так — но не совсем.

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

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

К примеру, фраза «ШАПКА и Юля» преобразуется в «SHAPKA и YUlya», либо в «ShAPKA и Yulya» — в зависимости от того, что задано в таблице транслитерации для «Ш» и «Ю» (иногда задаётся «SH» и «YU», а иногда «Sh» и «Yu»).

То есть регистр следующей буквы в стандартных функциях транслитерации не учитывается, и все буквы в верхнем регистре заменяются по общим правилам. Поэтому в ходе транслитерации для слов «ЧАША» и «Щи» легко получается что-то вроде «ChAShA» или «SCHi», когда реально мы скорее хотели получить «CHASHA» и «Schi».

Тем не менее, все найденные реализации транслитерации из кириллицы в латиницу на Python, как выяснилось, эту особенность не учитывали. Это и многочисленные решения, приведённые на форумах, и библиотека pytils, реализующая транслитерацию в одном из своих модулей.

Значит, напишем свою функцию транслитерации, с блэкджеком и^W^W^W^H^H. :)

Читать дальше →

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity