Данные готовите как хотите, по ним и ищете.
У меня размен подготовленных данных
351M ./passports
Полный перебор это понятно что не вариант.
Читается с диска, обычный hdd.
Озу по моему в районе 3 мегабайт отъедает.
Да 0.004 секунды на весь поиск.
Не российские паспорта с буквами. Их в процессе парсинга файла пропускаем.
Размер csv 1G, количество записей ~92 миллиона.
Обновляется один раз в сутки, готовим датасет, потом по нему ищем.
Бенчмари, тесты не особо нужны, задачка слишком маленькая, комментарии по желанию.
Обработка командной строки по желанию, руками это никто не запускает.
У меня это тупо 2 утилиты генерятся с одного кода.
Подготовка датасета:
> passports_db list_of_expired_passports.csv
проверка паспорта:
> passports_check 0000000000
Будет код кидайте ссылку на github, завтра скомпилирую, сравню.
Требование к месту оперативке и тд, взяты не на пустом месте, это вполне реальный кейс.
Выбор С тут особенного выигрыша не даст, на самом деле написать под эти требования можно на любом компилируемом языке.
Ups, sorry, пока редактировал ошибся.
В файле список плохих паспортов, номер паспорта это 10 значное число.
Если номер паспорта входит в этот список он плохой(1), если нет, то хороший(0).
А на тему экономии времени — силы, там около 100 строк кода включая импорты библиотек.
И результат тоже в виде статически скомпилированного бинарника.
Задачка:
Есть база невалидных паспортов www.fms.gov.ru/upload/expired-passports/list_of_expired_passports.csv.bz2
требуется утилитка для проверки паспорт нормальный или нет.
Требования:
1) минимум занимаемого места на диске, минимум оперативки, минимум cpu, отрабатывать должна быстро.
2) обновляется раз в сутки
3) базы данных не использовать.
4) не российскими паспортами можно(нужно) пренебречь.
Пример работы:
/var/www/passports$ du -h --max-depth=1 .
351M ./passports
366M .
> # Размер подготовленных данных
[host]/var/www/passports$ time ./passports_check 0000000000
1
> # плохой паспорт
./passports_check 0000000000 0,00s user 0,00s system 75% cpu 0,004 total
[host]/var/www/passports$ time ./passports_check 0000000005
0
> # хороший паспорт
./passports_check 0000000005 0,00s user 0,00s system 76% cpu 0,004 total
Обновление, разархивацию отдается на откуп cron, bash.
С удовольствием посмотрю на реализацию на Go и сравню со своим вариантом.
Проблема в том что обновить сервисы можно быстро, а вот мобильные клиенты быстро обновить не получится.
Так что «сразу» проблематично, и это касается любого сервиса имеющего клиент серверную архитектуру и завязанного на тыкалки.
«Second, we are introducing a new built-in execution driver which is shipping alongside the LXC driver. This driver is based on libcontainer, a pure Go library which we developed to access the kernel’s container APIs directly, without any other dependencies.»
А теперь по теме.
С тем что ничего нового и революционного мы определились. Ок.
Плюсы мне понятны, минусы тоже, но вы как инженер, будьте любезны сами их озвучивать, а не рисовать картинки втаптывая в грязь технологии и разработки на которых докер основан.
Вот и вся мысль
Ну и резюмирую:
Докер это набор утилит по взаимодействию с api ядра linux написанный на go + api
Никаких новых технологий он не несет, но упрощает использование контейнерной виртуализацией для не специалистов, плюс имеет хорошую маркетинговую поддержку.
Чаще != всегда
А что докер без lxc уже работать может?
Докер это всего лишь утилита над lxc namespace + diff ы файловой системы
Контейнеры вещь давно известная, и lxc из них не самая опробированная технологи.
Namespace — как бы и без докера сами по себе живут
«Луковичная файловая система» — тоже без докера имею место быть.
Так что же докер такое?
3-4 гига?
Сударь вы либо целенаправленно лжете, либо наивно заблуждаетесь.
Размер образа тот же что у docker.
И что за настройка? Если вам дают уже настроенный образ, или для докера вам дают готовый докер файл или готовый шаблон, а для kvm, xen, virtual box, VMware вам дают только полуфабрикат?
Память, ну да, наверно. 50-100 мегабайт на виртуальную машину это финиш…
А в lxc у вас все контейнеры сделаны грамотно, стартует только один нужный процесс, ну ну. Верю.
Аналог на haskell, но так написать можно только специально. )
module Heartbleed where
import System.IO
import Data.Array.IO
import Data.Word
copy :: String -> String -> IOUArray Int Word8 -> IO ()
copy from to buffer = do
from' <- openFile from ReadMode
to' <- openFile to WriteMode
c <- hGetArray from' buffer 250
hPutArray to' buffer 250
hClose from'
hClose to'
main = do
buffer <- newArray_ (0,250)
copy "yourping" "yourecho" buffer
copy "myping" "myecho" buffer
~/Tmp -$ cat yourecho limbo-home@chemist :)
#i have many secrets. this is one.
�8d��=��d�T�% ~/Tmp -$ cat myecho limbo-home@chemist :)
#i know your
secrets. this is one.
�8d��=��d�T�%
Ну с другой стороны концепт обещает быть весьма интересным.
В мой проект, в качестве хранилища для метрик, он у меня вписался как влитой.
В процессе разработки пока удобно, буду ближе к релизу, буду думать, оставлять его или менять на что-нибудь другое (архитектура позволяет, код привязки строк 150).
А так да, сыроват, эпизодически странно себя ведет.
> Yes, it is interesting,
> I review code, you are use cerph as distributed store,
> but why not using InfuxDB? ( influxdb.com )
We chose to build our own TSDB after evaluating a few, such as influxdb and
finding them immature/unstable/etc. We could not get influxdb to build at the
time, and fixed a few bugs before giving up. We already have Ceph rolled out
internally as a data store and trust it to replicate data without losing it. I
will be releasing a blog post shortly on the subject, I'll send you a copy.
Собственно парни работают в аналогичной сфере что и вы. Тут можно прочитать про их TSDB,
Исходники на github, язык реализации haskell.
Купил подписку на месяц, продлять не стал.
Без интернета в мобильном приложении нет практически ничего.
С интернетом, функционал по сравнению с сайтом весьма ограничен.
В общем пилите, пока мой кошелек проголосовал за Words и iFrank + пока ищу приложения для изучения грамматики.
У меня в моем проекте планируется набор системных утилит с выводом в json, попутно могу и для вас накидать.
Только по времени быстро не обещаю, занят сейчас.
язык Haskell
Не.
Пересборка под собственные нужды это нормально.
Правила для сборки от производителя по обязательны, иначе это не релиз а внутренняя альфа или бета.
За ссылку спасибо.
По поводу superjob, поддерживаю.
Но как системный администратор с > 10 лет стажем и как человек программирующий на haskell, прошу выполнить обещание написать статью про использование haskell в production на примере selectel.
У меня размен подготовленных данных
351M ./passports
Полный перебор это понятно что не вариант.
Читается с диска, обычный hdd.
Озу по моему в районе 3 мегабайт отъедает.
Да 0.004 секунды на весь поиск.
Не российские паспорта с буквами. Их в процессе парсинга файла пропускаем.
Размер csv 1G, количество записей ~92 миллиона.
Обновляется один раз в сутки, готовим датасет, потом по нему ищем.
Бенчмари, тесты не особо нужны, задачка слишком маленькая, комментарии по желанию.
Обработка командной строки по желанию, руками это никто не запускает.
У меня это тупо 2 утилиты генерятся с одного кода.
Подготовка датасета:
> passports_db list_of_expired_passports.csv
проверка паспорта:
> passports_check 0000000000
Будет код кидайте ссылку на github, завтра скомпилирую, сравню.
Выбор С тут особенного выигрыша не даст, на самом деле написать под эти требования можно на любом компилируемом языке.
В файле список плохих паспортов, номер паспорта это 10 значное число.
Если номер паспорта входит в этот список он плохой(1), если нет, то хороший(0).
А на тему экономии времени — силы, там около 100 строк кода включая импорты библиотек.
И результат тоже в виде статически скомпилированного бинарника.
Есть база невалидных паспортов www.fms.gov.ru/upload/expired-passports/list_of_expired_passports.csv.bz2
требуется утилитка для проверки паспорт нормальный или нет.
Требования:
1) минимум занимаемого места на диске, минимум оперативки, минимум cpu, отрабатывать должна быстро.
2) обновляется раз в сутки
3) базы данных не использовать.
4) не российскими паспортами можно(нужно) пренебречь.
Пример работы:
Обновление, разархивацию отдается на откуп cron, bash.
С удовольствием посмотрю на реализацию на Go и сравню со своим вариантом.
Так что «сразу» проблематично, и это касается любого сервиса имеющего клиент серверную архитектуру и завязанного на тыкалки.
Молодцы.
«Second, we are introducing a new built-in execution driver which is shipping alongside the LXC driver. This driver is based on libcontainer, a pure Go library which we developed to access the kernel’s container APIs directly, without any other dependencies.»
А теперь по теме.
С тем что ничего нового и революционного мы определились. Ок.
Плюсы мне понятны, минусы тоже, но вы как инженер, будьте любезны сами их озвучивать, а не рисовать картинки втаптывая в грязь технологии и разработки на которых докер основан.
Вот и вся мысль
Ну и резюмирую:
Докер это набор утилит по взаимодействию с api ядра linux написанный на go + api
Никаких новых технологий он не несет, но упрощает использование контейнерной виртуализацией для не специалистов, плюс имеет хорошую маркетинговую поддержку.
А что докер без lxc уже работать может?
Докер это всего лишь утилита над lxc namespace + diff ы файловой системы
Контейнеры вещь давно известная, и lxc из них не самая опробированная технологи.
Namespace — как бы и без докера сами по себе живут
«Луковичная файловая система» — тоже без докера имею место быть.
Так что же докер такое?
Сударь вы либо целенаправленно лжете, либо наивно заблуждаетесь.
Размер образа тот же что у docker.
И что за настройка? Если вам дают уже настроенный образ, или для докера вам дают готовый докер файл или готовый шаблон, а для kvm, xen, virtual box, VMware вам дают только полуфабрикат?
Память, ну да, наверно. 50-100 мегабайт на виртуальную машину это финиш…
А в lxc у вас все контейнеры сделаны грамотно, стартует только один нужный процесс, ну ну. Верю.
Еще вопросы?
игра: steamcommunity.com/sharedfiles/filedetails/?id=107105028
браузер: github.com/k0ral/hbro
и еще тут можно посмотреть реализацию простого браузера: hrothen.github.io/2014/09/05/lets-build-a-browser-engine-in-haskell/
rss агрегатор: bazqux.com
он же сайт
В мой проект, в качестве хранилища для метрик, он у меня вписался как влитой.
В процессе разработки пока удобно, буду ближе к релизу, буду думать, оставлять его или менять на что-нибудь другое (архитектура позволяет, код привязки строк 150).
А так да, сыроват, эпизодически странно себя ведет.
Собственно парни работают в аналогичной сфере что и вы.
Тут можно прочитать про их TSDB,
Исходники на github, язык реализации haskell.
Без интернета в мобильном приложении нет практически ничего.
С интернетом, функционал по сравнению с сайтом весьма ограничен.
В общем пилите, пока мой кошелек проголосовал за Words и iFrank + пока ищу приложения для изучения грамматики.
Только по времени быстро не обещаю, занят сейчас.
язык Haskell
Пересборка под собственные нужды это нормально.
Правила для сборки от производителя по обязательны, иначе это не релиз а внутренняя альфа или бета.
За ссылку спасибо.
Но как системный администратор с > 10 лет стажем и как человек программирующий на haskell, прошу выполнить обещание написать статью про использование haskell в production на примере selectel.