@Linda-chan

Тег ruby в блоге Linda-chan

Linda-chan

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

Linda-chan

Меня угнетает, что в Руби, как в Цэ сначала идёт функция, а потом - её использование. Там прототипы не объявляются?

Linda-chan

В новой версии Руби под Windows выяснилось, почему кириллица в командной строке больше не проблема. Для начала программа получает юникодную командную строку при помощи функции GetCommandLineW(). Здесь использована W функция для получения командной строки в UTF-16 вместо ANSI.
Потом она пуляет её в функцию, которая занимается парсингом.
https://github.com/ruby/rub...7/win32/win32.c#L774
Обратите внимание на флаг CP_UTF8 - он означает, что после парсинга командная строка из UTF-16 будет перегнана в UTF-8 и дальше будет использована в таком виде.
После дробления на составляющие, программа командует конвертировать UTF-16 строки параметров в указанную кодировку, тоесть, в UTF-8.
https://github.com/ruby/rub.../win32/win32.c#L1747
В функции перекодирования находится простой WideCharToMultibyte(), который и делает указанную работу.
https://github.com/ruby/rub.../win32/win32.c#L1968
Дальше не интересно.
О чём это говорит? Авторы Windows билда Руби теперь в курсе, что юникод в Win32 API существует в UTF-16, и командная строка приложения прилетает в программу именно в этом формате. Кроме того, авторы правильно проводят парсинг и конвертируют текст в кодировку, которая уже дальше используется тем самым кроссплатформенным кодом. Заодно авторы отвечают на вопрос: «А чё, винда не умеет UTF-8?»
Иными словами авторы плюют в лицо всем графам, дедфудам и прочим любителям программ «изначально проектирующихся под UTF-8», тоесть дважды делают всё правильно.
Но всёже можно было заюзать CommandLineToArgW() и не мучиться.

Linda-chan

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

Linda-chan

Бугага. Похоже, проблему с командной строкой, о которой я писала ранее, уже исправили. Но я не могу обновиться потому что собирается рубиинсталлер через одно место и последняя версия в XP не работает при отсутствии объективных причин для этого =_=

Linda-chan

Постигаю парсинг XML рубями. Постигать пока что нечего - примерно как у меня в XML Helper, только ещё проще. Вау!

Linda-chan

Ruby хочет аргументы командной строки в UTF-8. Они там охренели что ли?

Linda-chan

Какие же вы японцы непостижимые.
– Американский японец японскому японцу в фильме "Брат якудзы"

Linda-chan

Читаю про строковые операции - мозг взрывает покруче, чем в JavaScript.

str[start, length] > new_str or nil
For the start and range cases the starting index is just before a character and an index matching the string’s size.

http://ruby-doc.org/core-2.2.2/String.html
Иными словами, первый символ в строке, он даже не нулевой, а минус первый. Хотя, помня, что автор - японец...

Linda-chan

Офигеть!

if index.even? then

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.