LINUX.ORG.RU
ФорумTalks

AYKVMSBB 0.0000000000001

 , ,


5

3

Я тут посмотрел на относительно недавнее веселье... И решил принять участие. Итак...

Наконец-то состоялся долгожданный первый релиз (c) утилиты AYKVMSBB. Скачать можно тут.

Что означает название можно посмотреть в README.md на страничке github. Программа позволяет быстро узнать курс валюты.

Ну и от слов к делу. Примеры работы программы:

$ ./aykvmsbb           # без аргументов выводится курс валюты по умолчанию для вашей страны (если она есть в бд)
USD: 26.070702
$ ./aykvmsbb EUR       # а вот так можно задать интересующую нас валюту
EUR: 29.253935
$ ./aykvmsbb 1122013   # а вот так можно узнать курс на первое декабря 2013 года
USD: 7.993
$ ./aykvmsbb 1103      # если нужна определённая дата текущего года - год можно опустить
USD: 26.908632
$ ./aykvmsbb 1         # аналогично если нужно 1-е число текущего месяца
USD: 26.310335
$ ./aykvmsbb 28        # А вот и киллер-фичи подъехали! Если сейчас (к примеру) 1-е число, но нужен курс за 28 число прошлого месяца - месяц можно не указывать
USD: 26.27667
$ ./aykvmsbb JPY 28    # Аргументы можно указывать в любом порядке
JPY: 0.235113
$ LC_MONETARY=uk_UA.UTF-8 ./aykvmsbb # меняем страну и смотрим курс НБУ
USD: 26.070702
$ LC_MONETARY=ru_RU.UTF-8 ./aykvmsbb # аналогично для Банка России
USD: 57.002

Программа распространяется под лицензией GNU GPL v3.

Помимо прочего, по сравнению с утилитой DELIRIUM-а:

1) Утилита возвращает корректный код возврата в зависимости от успеха/неудачи.
2) По возможности в стандартный поток ошибок пишется ошибка.
3) Используется официальное API банков вместо парсинга веб страничек.
4) Независимо от данных, возвращаемых банком, числа с плавающей запятой всегда используют точку для разделителя дробной части.
4а) Числа с плавающей запятой при отображении не содержат лишних нулей в конце.
5) Не нужны никакие зависимости и библиотеки. Для компиляции необходим C99 совместимый компилятор, а для выполнения любая POSIX совместимая ОС.
6) Поддерживаются различные страны (пока что Россия и Украина), возвращается любая валюта, предоставляемая банком.

Фич-реквесты, багрепорты и (особенно!) пуллреквесты принимаются по адресу https://github.com/xdevelnet/AYKVMSBB

Хочу также отдать честь и совершить низкий поклон следующим регистрантам:

1) saahriktu
2) DELIRIUM

Ну и кастану nihirash - по приколу.

★★★★★

Ответ на: комментарий от nihirash

хз, я вообще символы валют не люблю по многим причинам
ISO проще, удобнее, понятнее

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

reprimand ★★★★★
() автор топика
Ответ на: комментарий от nihirash

прикольно когда заходишь на какие-то сторонние сайты где тебе предлагают купить товар или услугу. Ну и «типа» для удобства показывают тебе в валюте твоей страны (страна, я так понял, по geoip определяется). Ну и когда я вижу этот неведомый символ вместо нормального UAH - мой пукан сразу взрывается из-за необходимости гуглить символ каждый раз.

Всё-таки нормальных веб разработчиков крайне мало... :(

reprimand ★★★★★
() автор топика
Ответ на: комментарий от reprimand
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
execve("./aykvmsbb", ["./aykvmsbb"], [/* 20 vars */]) = 0
brk(NULL)                               = 0x8b5a000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb772e000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=25033, ...}) = 0
mmap2(NULL, 25033, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7727000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\207\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1786484, ...}) = 0
mmap2(NULL, 1792540, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7571000
mprotect(0xb7720000, 4096, PROT_NONE)   = 0
mmap2(0xb7721000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1af000) = 0xb7721000
mmap2(0xb7724000, 10780, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7724000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7755000
set_thread_area({entry_number:-1, base_addr:0xb7755940, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 (entry_number:6)
mprotect(0xb7721000, 8192, PROT_READ)   = 0
mprotect(0x804b000, 4096, PROT_READ)    = 0
mprotect(0xb7756000, 4096, PROT_READ)   = 0
munmap(0xb7727000, 25033)               = 0
write(2, "LC_MONETARY environment variable"..., 86) = 86
exit_group(1)                           = ?
+++ exited with 1 +++
Morin ★★★★
()

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

Фич-реквесты <…> принимаются <…>

По идее это должно зависеть от LC_*, нет?

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

По идее это должно зависеть от LC_*, нет?

Хм. Ну вообще да. Но по дефолту ЕМНИП используется локаль «C», т.ч. чтобы задействовать LC_* нужно подгрузить локаль окружения.

reprimand ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.