Posts

Showing posts from May, 2014

Кастомізація setuptools в Python

Зіткнувся з необхідністю реалізації власної логіки встановлення пакету. Пошукавши занйшов рішення, яке ґрунтується на перевизначенні метода інсталяції: setup( ..., cmdclass={ 'install': ....., } ) Як видно зі зразка коду власний встановник визначається в секції cmdclass - install і приймає клас (об'єкт класу). Ось повний зразок: def get_fonts_loader(): def run(self): install.do_egg_install(self) package_dir = os.getcwd() os.chdir("src/captcha/") subprocess.call(["git", "clone", "https://github.com/epadyachok/fonts.git"]) os.chdir(package_dir) return type('CustomInstaller', (install, object,), {'run' : run}) setup( name='captcha', version='4.0', packages=['captcha'], package_dir={'captcha':'src/captcha'}, install_requires =[ ...

Аліас що приймає параметри

При вивченні  Hadoop зіткнувся з проблемою запуску MapReduce завдань великою і страшною командою: hadoop -jar /повний_шлях_до_jar_бібліотеки_haddop_streaming -map файл_маппер -reduce файл_ред'юсер -file файл_маппер -file файл_ред'юсер -input папка_з_даним_що_тре_опрацювати -output папка_для_результатів Я бачите команда довга та страшна :), можна легко заробити помилку. Складність команди змусила мене звернутися до alias, проте вони не приймають параметрів. Трошки погугливши знайшов рішення тут та тут . Отже, рішення просте написати функцію, яка опрацьовує передані параметриб та призначити їй алас. Ось зразок мого коду: export HADOOP_STREAMING="/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.3.0-mr1-cdh5.0.0.jar" hadoop_task() { if [ $# -ne 4 ]; then echo "Please provide all data"; echo "Usage hs [mapper_file_name] [reducer_file_name] [input_dir] [output_di...