Задать вопрос
  • Создание инфографики?

    Zigmar
    @Zigmar
    Любой векторный графический редактор. Из бесплатных: Inkscape
    Ответ написан
    1 комментарий
  • Компиляция Qt GUI под Android

    Zigmar
    @Zigmar
    «100% кросс-платформенности» можно добиться разве, что в играх, и то большими натяжками (все равно будут различия между девайсами и платформами), и то потому, что игры почти не требуют интеграции с ситемой и системными сервисами. Для приложений общего назначения требующего взаимодействия с устройством, вряд ли удасться добиться приемлемой кросплатформености, как в техническом плане, так и в концептуальным — например если просто перенести дизайн и воркфлоу приложения с айфона на андроид или наоборот то получится полная фигня (хотя тупые клиенты любят требовать «хочу чтоб прога под Андроид выглядила точно так-же как под Айфон»).
    Тем не менее, хотя как я написал, 100% переносимости вряд ли получится добиться, есть всякие способы реюзать большие куски кода, например:
    1. Писать бек-энд на С++, который поддерживается почти всеми основными мобильными платформами (за исключением WP7) а «морду» делать родную для каждой платформы. Оптимальный с точки зрения юзер-экспириенс вариант, но один из самых затратных по времени, хуже только полностью раздельный код под все платформы.
    2. Воспользоваться одной из многочисленый библиотек для крос-платфоменой разработки. Позволит сократить время разработки, но имет свои недостатки — «неродной» look&feel (что простительно для полностью стилизованых интерфейсов игр, но не очень хорошо для нормальных приложений), плюс дополнильный уровень абстракции с дополнительными глюками и закидонами (которых в зоопарке мобильных устройст и платформ и так достаточно). Еще проблема таких библиотек, что часто они работают по принципу наименьшего общего знаменателя, без бубна предоставля доступ только к фичерами доступным на всех платформах, и то не всегда.

    Конкретно насчет Qt — официальная версия Android не поддерживает и скомпилировать Qt под андроид NDK будет очень сложно. NDK предоставляет только минимальный набор API, немногим больше, чем только libc, libm, libgl и limstdc++, а соотвественно придется самому компилировать все зависимости. Насчет андроид порта указаного выше, насколько я знаю, проект еще очень сырой, и сомневаюсь, что он подходит для продакшена. Поиметь кросплатформеную библиотеку уровня Qt для Андроида было бы отлично (сам с нетерпением жду), но боюсь что до этого еще достаточно далеко.
    Ответ написан
    Комментировать
  • Программа для редактирования GPS маршрутов?

    Zigmar
    @Zigmar
    «Маршрут GPS»? Что это?!
    Проложить и редактировать маршрут можно на Google Maps.
    Ответ написан
    1 комментарий
  • Стоит ли изучать smalltalk?

    Zigmar
    @Zigmar
    Продуктивность языка определяется не его синтаксисом, а:
    1) Уровнем вашего знания этого языка
    2) Опытом работы с ним
    3) Наличия пособий, документации и книг по нему
    4) Наличия коммьюнити вокруг этого языка
    5) Наличия сторонних библиотек
    6) Наличия инструментов для работы (компиляторов, отладчиков, сред разработки и редакторов, и т.д.)
    7) Соответствию домейна задачи к домейну языка (продуктивно ли писать мобильную игру на Коболе?)

    Синтаксис тоже не то, что бы не важен, но если отсортировать по важности факторов, думаю он будет где-то в конце списка.

    Не смотря на все сказанное выше, всегда полезно учить новые языки программирования для общего образования, особенно языки с парадигмами отличающимся от знакомых вам языков (например, стоит выучит какой-нибудь функциональный язык, если вы работали только с процедуральными). В плане же применения в индустрии, малопопулярные, академические, «концептуальные» (например религиозно чисто-(ооп/функиональные/whatever)), узкоспециализированные языки — как правило плохо удовлетворяют приведенным выше требованиями.
    Ответ написан
    Комментировать
  • Прием платежей у западных пользователей

    Zigmar
    @Zigmar
    Я думаю, если вы хотите работать со Штатами, в особенности, если транзакции небольшие — то у вас нету особого выбора, кроме как пользоваться пейпалом или напрямую процессить банковскую карту. Есть еще Google Checkout — я про него ничего не знаю, кроме того, что он все равно далеко позади пейпала по популярности. Moneybookers, мне пришлось, как пользователю, воспользоваться им для оплаты услуги в одной из стран СНГ, и я скажу, что по сравнению с пейпалом где оплата производится в два клика, это страшный геморрой, и еслиб мы не было бы так нужно (девушке онлайн курс оплачивал) просто забил бы на это. Я к тому, что заменив пейпал на какой-нибудь moneybookers (или не предоставив выбора) вы будете терять клиентов, которых отпугнет слишком сложный, длинный и запутанный процесс оплаты через эту систему.
    Ответ написан
    9 комментариев
  • Консолидация всех источников телефонной книги Android в Gmail

    Zigmar
    @Zigmar
    Не уверен, что есть что-то готовое, но API позволяет добавлять картинки в gmail эккаунт, и они потом синхронизируются в облако. Так-же несложно, черед тот-же API вытащить текущую картинку контакта (или из его конкретного источника, например файсбука). Осталось только кому-нибудь это написать :) Я вообще даже знаю как, но боюсь, что в ближайшее время я не смогу этим заняться по причине тотального отсутствия времени :-/
    Ответ написан
    Комментировать
  • lua - практическое применение?

    Zigmar
    @Zigmar
    Луа, будучи, очень простым и компактным языком — легко встраиваться. Включаете пару десятков чистых сишных файлов в проект — и вуаля — у вас встроеный язык. Еще, настраиваемость — по большому счету, в плане библиотек, луа это скорее скелет языка, чем полноценный язык програмирования. Иногда при встраивание вообще выкидвают большую часть (или всю) «стандартную» библиотеку, заменяя ее специализированной под домейн, фактически создавая специализированный язык. Еще один плюс — компактность. Я как-то давно, проверял возможность запускать луа-интерпретатор в качестве отладочного модуля на встроенном чипе (я не говорю про смартфоны, а про «жесткий» embedded). Так вот, виртуальная машина луа (правда почти без библиотек и без интерпретатора, кормить ей надо было уже байткод) занимала 15кб (!) RISC кода. Оказалось, что вполне реально запустить было на том железе, хотя в конце эту идею зарубили как слишком сумашедшую («интепретатор в нашем RT?!»). Идем дальше, Луа можно использовать в качестве декларативного языка, но с «плюшкой» в виде динамичности и читаемости человеком, в отличии скажем от статических декларативных систем, например XML. Я как-то делал декларативную систему описания автоматических тестов на луа, получилось по-моему, неплохо. :) А из более простых примеров такого применения — это файлы конфигурации. Простые файлы var=value легко распарсить вручную, на зато на луа можо сделать вот так:
    width = 100
    height = width*1.2
    positions[0] = {x=0, y=height-20 }

    Причем реализуется буквально в пару строчек со стороны хоста — инициализовать луа, запарсить и выполнить скрип, считать получившиеся глобальные переменные, все.

    Вообщем давайте просуммируем: если нужен легко встраиваемый, компактный, настраиваемый и быстрый скриптовый язык, чтобы расширить функциональность вашей программе — луа отлично для это подходит. Но если нужный полноценный самостоятельный язык, c богатой библиотекой и возможность писать приложения от начала до конца, то лучше посмотреть в сторону «серьёзных» собратьев, скажем Пайтона (Perl, Ruby, whatever). Их, кстати, тоже можно встроить в качество скриптового языка, просто это далеко не всегда оправданно там, где можно ограничится луа.

    Вот.

    ЗЫ: JavaScript в чем-то похож на луа тем, что он тоже почти никогда не используется как «самостоятельный» язык.
    Ответ написан
    Комментировать
  • Зачем нужна иерархия процессов в Unix?

    Zigmar
    @Zigmar
    Я думаю тут не совсем корректен вопрос «зачем», я думаю это просто свойство, которое является прямым следствием архитектуры системы. Я не уверен, с какого конца шли проектировщики юникс, но мне кажется, что не от «давайте сделаем дерево процессов», а «как будем реализовывать создание и управление процессами». Дело в том, что в юникс, процессы, кроме init, не создаются просто так, «из воздуха», они всегда отпочковываются от другого процесса (fork) и в результате из одного процесса получаются два — родительский и дочерней между которыми есть тесная связь (и как следствие естественным образом получая древовидную структуру). Кроме уже упомянутых сигналов, дочерний процесс наследует дескрипторы файлов, через которые, если надо, налаживается связь между дочерним и родительским процессом.
    Ответ написан
    Комментировать
  • Когда видимость метода стоит установить private, а когда — protected?

    Zigmar
    @Zigmar
    Если явно не надо делать protected (например метод переопределив который, вы позволите пользователю модифицировать поведение) — делайте private. На «всякий случай» делать protected — это по крайней мере странно, это все равно, что на всякий случай делать все public. Вообще, если вы пишете библиотеку, то так-же как вы определяете, что будет публичным интерфейсом (public) а что имплементацией (private), введите еще одну сущность — интерфейс для наследников. С таким делением (интерфейс для всех/интерфейс для наследников/детали имплементации) все должно стать более или менее понятно.
    Ответ написан
    3 комментария
  • Увеличение корневого каталога Linux?

    Zigmar
    @Zigmar
    А в чем проблемма? Форматируете новый раздел, загружаетесь в какой-нибудь liveCD, переносите все содержимое, скажем /usr на новый раздел, старый на всякий случай сохраняете под другим именем, добавляете в автомаунт автоматическое монтирование нового раздела в /urs
    Так можно поступить с любой дерикторией, кроме виртуальных файловых систем вроде /proc. В этом вся красота унифицированной файловой системы в *nix. Любая ветка может быть смонтирована куда угодно, хоть в лупбек файл, хоть на сетевой диск. Причем это можно легко менять и конфигурировать, и для пользователей ФС это совершенно прозрачно. Кстати, некоторые файловые системы, кажется zfs к ним относится, позволяет добавлять «на лету» новые физические девайсы и разделы к существующей файловой системе, увеличивая ее объем.
    Ответ написан
    Комментировать
  • На каком языке пишут программы для Android

    Zigmar
    @Zigmar
    Родной язык Андроида (как это ясно видно из документации) — это Java. Весь API к платформе предоставлен в виде Java библиотек. Впрочем, на самом телефоне бежит не джава — джававский байткод интерпретируется в родной андроидовский (Dalvik), который и запускается на аппарате. Кроме этого, есть NDK (native development kit) — набор инструментов и библиотек, которые позволяют скомпилировать нейтивный позикс (Линукс) код и прицепить это к аппликации. Соответственно, там может бежать все, что компилируется в нейтевный код, включая интерпретаторы скриптовых языков и виртуальные машины. До недавнего времени, нельзя было создать приложение полностью в нейтивном коде — все равно нужна была обертка из Java, недавно, добавив набор нейтивных библиотек с системными API стало возможно написать нейтивную программу от начала до конца, без Java.

    Из вышеперечисленного ясно, что можно писать практически на чем угодно. В реальности же, в большинстве случаев, пишут на Java, иногда цепляют переписанные узкие места и/или сторонние библиотеки на С/С++. Исключения — игры, которые часто пишут целиком или почти целиком на С++.
    Ответ написан
    Комментировать
  • Простой чат (для Windows или web-based)

    Zigmar
    @Zigmar
    Чат на bat-файлах через дропбокс?! Это реальный «WTF»…
    Ответ написан
    1 комментарий
  • Какой жесткий диск самый надежный?

    Zigmar
    @Zigmar
    По идее SSD должны быть намного надежнее традиционных жестких дисков, но и цена, понятное дело, на порядок-два больше. А если надо дешево и сердито надежно, то это, как уже упомянули выше — любой диск (бренд не имеет значения) в рейде.
    Ответ написан
    Комментировать
  • Преимущества систем контроля версий, альтернативных SVN?

    Zigmar
    @Zigmar
    В качестве полуюморного ответа послушайте презентацию Линуса Товардса про git: Google Tech Talk: Linus Torvalds on git. Смешно, хотя очень догматично — Линус считает любую централизованную VCS злом и преступлением против человечества.

    Сам я, несколько лет активно работал с SVN — последнюю фирму я сподвигнул перейти на SVN c VSS, в результате чего администрирование тоже свалилось на меня. Сейчас перешел на Mercurial — и очень доволен, возвращается не собираюсь, просто потому он дает все то, что дает SVN плюс много. Из преимуществ:

    1) Надежность #1. Конкретно в SVN часто приходится делать cleanup, unlock, решать проблемы вроде той, если кто-то случайно переносит директорию вместе .svn, неконсистентные деревья (когда версии поддиректорий отличаются) и т.д. В Mercurial я с таким не сталкивался.
    2) Надежность #2. Умерший сервер в централизованной VCS — это серьёзная проблема, при отсутствие своевременного бекапа — это глобальная катастрофа. В распределенных системах — каждый клон — это фактически бекап всего репозитория.
    3) Ветки. Все кто работал с SVN, знает какая это страшная головная боль. Создавать их действительно очень лего, мержить — страшный геморрой. В распределенных системах это, как правило, намного проще и надежнее.
    4) Независимость от сервера. Очень полезно при удаленной работе.
    5) Локальные чек-ины (коммиты). С SVN, чтоб сохранять промежуточные шаги, не ломая другим рабочую ветку, надо создавать свою ветку, которую потом мержить (что в SVN, как известно, не слишком удобно). На практике, я наблюдал, что многие просто не коммитят, пока не заработает — иногда это дни или даже недели работы. Возникает вопрос — нафига тогда VCS нужна? В распределенных системах можно в локальный репозиторий коммитить сколько душе угодно, хоть 100 раз в день, а когда готово, сделать push изменений в общий репозиторий.
    6) Гибкость. Распределенные системы дают несколько разных способов организации работы, включая работу с центральным репозиторием (а-ля SVN), куда все «сдают» изменения. При этом, каждый у себя или в группах девелоперы могут организовывать работу по своему. Централизованные системы навязывают один способ работы с минимум гибкости.
    Ответ написан
    Комментировать
  • Пользуются ли гугловской Живой Лентой?

    Zigmar
    @Zigmar
    Как и с любыми социальными сетями вопрос «пользуются ли» неуместен, а уместен «пользуются ли те, с кем я хочу общаться». Взять каких-нибудь Одноклассников. Пользуются ли? Да, пользуются. Но какому-нибудь Генри из Лондона — они нафиг сдались, так как все его друзья сидят в фейсбуке.
    Так и с этим, если круг ваших знакомых пользуются Баззом — то спокойно транлислируйте туда все, и будет вам счастье. Если нет — то даже если весь остальной мир им пользуется — вам оно все равно вряд ли нужно.

    Сам я активно пользуюсь (туда же автоматически транслируется ЖЖ, пикаса, ютуб и еще что-то) и много моих знакомых тоже там. Чисто технически, он намного удобнее твиттера для расшаривания всякого разного — позволяет вставлять кусочки текста и картинки с сайта по ссылке, напрямую вживляет видео и т.д. С другой стороны, твиттер намного популярнее и соответственно лучше интеграция с сайтами, больше мобильных клиентов и т.д. в
    Ответ написан
    Комментировать
  • Ускорение работы программиста?

    Zigmar
    @Zigmar
    Мне иногда помогает смена обстановки. Например взять лептоп и пойти работать в какую-нибудь тихую кафешку, где отвлекающих факторов меньше чем дома или в оффисе.

    Еще по теме из TED-а: Why work doesn't happen at work
    Ответ написан
    Комментировать
  • Подскажите интересные Open Source проекты на C#

    Zigmar
    @Zigmar
    Есть очень полезный сервис, Google Code Search — он позволяет искать и смотреть сорцы, в том числе так есть фильтрация по языку програмирования, лицензии и т.д.
    Ответ написан
    Комментировать