• Можно ли заработать в мире Unix-like, unix-way?

    @Z-r
    Мне известно четыре основных способа заработка, напрямую связанных со свободными программами:

    — Первый, самый прямой, но от того почему-то всем не менее неочевидный — брать и продавать копии свободных программ. Аудитория: любые конечные пользователи. Примеры: Parted Magic, ряд программок для «Андроида», ну например, «Conversations». Высокоморальность: в полном порядке.

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

    — Третий — это продажа исключений из авторского лева. Аудиторией будут разработчики несвободных программ, а программа ваша должна быть библиотекой под (как нетрудно догадаться) авторским левом, причем чаще сильным. Суть в том, что для добрых людей ваш продукт свободен на условиях, скажем, GNU GPL или GNU AGPL, а проприетарщики пусть платят за возможность использовать его в своих шкурных интересах. Примеры: GhostScript, MySQL. Высокоморльность: прихрамывает маленько.

    — Четвертый — это то, о чем помянул тов. CityCat4 — т. н. free crippleware, то есть полноценная ваша программа несвободна и платна, но у нее есть свободный урезанный вариант. Причем урезано может быть как что-то существенное, так и сущая ерунда. Аудитория: кто угодно. Примеры: Odoo, GitLab, ProcessMaker. Высокоморальность: от невысокой до никакой, смотря сколько отрезано.

    И разумеется, все вышеперечисленно можно комбинировать: Qt, к примеру, и поддержку (обучение) предоставляет, и исключения из авторского лева (причем слабого!) продает, и совсем ерундовую несвободную часть имеет. А упомянутый вами Red Hat — продает копии и предоставляет поддержку. А иногда и такое бывает: программка для «Андроида» под названием OsmAnd полностью свободна, но поставляется в Гуглоплэе в двух вариантах: полном за копеечку и урезанном бесплатно. Еще раз: обе версии свободны, то есть никакой моральной проблемы здесь нет.

    ――

    P. S. Я перечислил только способы заработка на программах как таковых, полагая, что схемы, где свободные программы участвуют косвенно, и без того очевидны, но в комментариях только о них и говорят, так что надо, наверное, упомянуть, что да, конечно, свободная программа также может быть:
    — Частью продаваемой услуги — чаще всего услуги специфического хостинга, как ставимый здесь в пример Openshift или (если ближе к народу) Feedly.
    — Частью продаваемого устройства, причем само устройство может быть как свободным, так и нет. Тысячи их.
    — И наконец, просто частью приносящего прибыль техпроцесса. То есть компания пишет (заказывает) программу себе для внутреннего использования и могла бы ее вообще не распространять, но, не считая ее своим «ноу-хау», ведет себя благородно и просто свободно делится ею со всеми. Известнейший пример — Reddit (хотя в последнее время они подскурвились).

    ――

    И не могу все-таки не отметить, что unix-way отношение к свободе имеет такое же, как мелкое к горячему.
    Ответ написан
    2 комментария
  • Как изучаем Python?

    @newpy
    web-dev
    "A Byte of Python" ("Укус Питона") by Swaroop (перевод В. Смоляр)
    wombat.org.ua/AByteOfPython
    Ответ написан
    1 комментарий
  • Как работать с многоядерными процессорами в Python?

    Sly_tom_cat
    @Sly_tom_cat
    .
    from time import time
    from threading import Thread
    from multiprocessing import Process

    def count(n):
    while n > 0:
    n -= 1

    startTime = time()
    count(100000000)
    count(100000000)
    print('\nSequential execution time : %3.2f s.'%(time() - startTime))

    startTime = time()
    t1 = Thread(target=count, args=(100000000,))
    t2 = Thread(target=count, args=(100000000,))
    t1.start(); t2.start()
    t1.join(); t2.join()
    print('\nThreaded execution time : %3.2f s.'%(time() - startTime))

    startTime = time()
    p1 = Process(target=count, args=(100000000,))
    p2 = Process(target=count, args=(100000000,))
    p1.start(); p2.start()
    p1.join(); p2.join()
    print('\nMultiprocessed execution time : %3.2f s.'%(time() - startTime))

    Дает на 4-х ядерном проце:

    Sequential execution time : 6.83 s.

    Threaded execution time : 11.37 s.

    Multiprocessed execution time : 6.30 s.

    Но допустим распараллеливание запросов к http серверу и в thread варианте даст огромный выигрыш.
    Т.е. без учета специфики задачи - в многопоточность/многопроцессорность - лучше просто не соваться.
    Ответ написан
    1 комментарий
  • Какую CMS выбрать для крупного информационного портала?

    Sanes
    @Sanes
    1. Что значит крупный?
    2. Каков должен быть функционал?
    3. Сколько вы готовы потратить на доработку и обслуживание?
    Короче, берите любую.
    Ответ написан
    Комментировать
  • Какие вы знаете понятные книги по алгоритмам?

    @1gnite
    "Структуры данных и алгоритмы Java", 2 издание - Роберт Лафоре
    Либо "Алгоритмы на Java" Седжвик, Уэйн как предложили выше.
    Лафоре, на мой взгляд читается полегче (многие вещи объясняются буквально на пальцах, множество иллюстраций и т.п.).
    Кстати, у Седжвика, Уэйна по их книге есть курс по на Coursera.
    Ответ написан
    1 комментарий
  • Растровые шрифты как в терминале Windows, но в виде ttf?

    excoder
    @excoder Автор вопроса
    Making things happen
    Нашёл рублёный TTF-шрифт как в Unix-терминале, в составе большинство utf8 символов.
    Подробности: parses.blogspot.com/2013/11/terminal-font-for-visual-studio.html.
    Ответ написан
    Комментировать
  • Растровые шрифты как в терминале Windows, но в виде ttf?

    z0rc
    @z0rc
    Второй — это Fixedsys. Можно сразу взять это расширенную версию с www.fixedsysexcelsior.com/
    Ответ написан
    1 комментарий