• Генерация уникального ID

    Infra_HDC
    @Infra_HDC
    R2AMO
    1. Попробуйте подумать в направлении использовать session_id() в качестве одного из источников для генерации хеша — в добавление к уже предложенным вариантам источников.
    2. Если полученные хеши нечеловекочитаемы, то почему бы их не хранить где-нибудь в отдельной таблице — имя поля HASH для хранения самого хеша внутри этой таблицы — а для генерации человекочитаемой части id использовать целочисленное ID, т.е. ключ из этой таблицы?
    3. Поддержание такой таблицы в актуальном состоянии
    3.1. У каждого значения HASH есть время жизни, после которого он недействителен, возможно это время хранится в отдельном поле данной таблицы в формате timestamp
    3.2. После того, как некий ID стал недействительным, есть технологический таймаут, после которого поле HASH очищается, и значение ID может использоваться повторно, либо запись удаляется полностью из таблицы
    3.3. Либо, неактуальностью ID управляет сам прикладной алгоритм
    При умелой реализации такого вот хозяйства, количество записей в таблице и максимальное значение его своего ID — должно быть не очень много, и с человекочитаемостью особых проблем возникнуть не должно: при поступлении заказов изначально ID будут 0, 1, 2, 3, 4, 5, ..., а при появлении дырок в последовательности, в результате удаления неактуальных ID — промежуточные значения между 1 и максимально достигнутом значением ID, т.к. дырки — вакантные области внутри упорядоченного множества значений ID — будут заполняться новыми данными.
    Ответ написан
  • IP-сервер печати с LPT для LINUX?

    Infra_HDC
    @Infra_HDC
    R2AMO
    Если на IP-сервере печати — протокол LPR (515/tcp) или HP JetDirect (9100/tcp) — то навряд ли, т.к. они принимают поток. Далее, для принтера поток выводится LPT-портом в одном из нескольких стандартных режимов, например для режима SPP — побайтно, а именно вот как: установка нужных значений на D0-D7, далее строб-импульс на одном из управляющих выходов, далее — переход к выводу следующего байта; вполне вероятно, что в режиме ожидания, т.е. когда строб прошёл, выходы при отсутствии следующих данных вполне могут переключаются на все нули или наоборот: на все единицы, или в третье состояние. Вообще-то если будете делать умный дом, то наверняка есть измерительная база в виде анализатора цифровых сигналов, ну или, по крайней мере, осциллографа — почему бы не проверить, подключившись к выходам?
    Ответ написан
  • Умных книжек, каких?

    Infra_HDC
    @Infra_HDC
    R2AMO
    Так понял, вам надо в основном идеологическо-философской пищи для развития.
    Вот примерно такое, что довелось читать, либо на крайний случай пытаться читать или держать в руках, и что произвело вполне положительное впечатление (как бы говорило само за себя, что вот тут истина):
    I. Философский фундамент
    1. С. Бир «Мозг Фирмы»
    2. Рене Декарт «Рассуждения о методе»
    3. Л. Бриллюэн «Наука и теория информации»
    4. Коносуке Мацусита «Принципы успеха»
    5. «Философия математики и технических наук» под общ. ред. С.А. Лебедева
    II. Общая методология, как в теории, так и на конкретных примерах
    1. Мэри и Том Поппендик «Бережливое производство программного обеспечения: от идеи до прибыли»
    2. Майкл Физерс «Эффективная работа с унаследованным кодом»
    3. Диомидис Спинеллис «Анализ программного кода на примере проектов Open Source»
    4. Эдвард Йордан «Путь камикадзе»
    5. Алистер Коберн «Быстрая разработка программного обеспечения»
    6. «Идеальный код» под редакцией Энди Орама и Грега Уилсона
    7. Нил Форд, Майкл Найгард, Билл де Ора и др. «97 этюдов для архитекторов программных систем»
    8. Пер Кролл, Филипп Кратчен «Rationa Unified Process — Это легко. Руководство по RUP»
    II.a. С сильной привязкой к языкам программирования
    1. Брайан Керниган, Роб Пайк «Практика программирования» (ощущается сильная привязка к C, но разобраны и другие языки).
    2. Никлаус Вирт «Алгоритмы и структуры данных» (с примерами на Паскале, но хорошо разжёвана сама концепция)
    3. Э. Гамма, Р. Хелм, Р. Джонсон, Дж Влиссидес «Приемы Объектно-Ориентированного Проектирования: Паттерны проектирования» (о шаблонах проектирования, вроде бы с примерами на SmallTalk, но есть много идеологии + каталог паттернов)
    4. В.Ф. Очков, Ю.В. Пухначёв «128 советов начинающему программисту» (на бейсике, но всё равно есть на что посмотреть)
    III. Базы данных
    1. К. Дж. Дейт «Введение в системы баз данных» Восьмое издание.
    2. Джен Харрингтон «Проектирование Объектно-ориентированных баз данных»
    IV. Пользовательский интерфейс
    1. Паван Вора «Шаблоны проектирования веб-приложений»
    2. Алан Купер «Психбольница в руках пациентов»
    V. Инфраструктура
    1. «Справочник информационного работника» Под общей редакцией Р.С. Гиляревского, В.А. Минкиной
    2. М.А. Зиганов «Скорочтение»
    3. Сид Кемп «Управление проектами. Без мистики»
    IV. Исторический экскурс
    1. Акио Морита «SONY. Сделано в Японии»
    2. Коносуке Мацусита «Миссия бизнеса»
    Ответ написан
  • Синхронизация linux машин

    Infra_HDC
    @Infra_HDC
    R2AMO
    А если посмотреть на вариант держать виртуальную машину в облаке (так, чисто концептуальный вопрос)?
    Ответ написан
  • Выбор ноутбука?

    Infra_HDC
    @Infra_HDC
    R2AMO
    Если еще молоды и бородаты, то по-моему, Mac OS X должен преподнести новое видение POSIX в качестве одной из его проприетарных реализаций. Если хотите расти в этом направлении, то почему бы и нет? Ну кроме POSIX — всякие другие NIX-овые вкусности есть у него. Насколько понимаю, в GNU/Linux есть уже опыт кнопконажимания, поэтому и говорю об этом. Кстати, слышал, что Mac OS X с GNU тоже определённо дружит. Правда сам не проверял, т.к. вот до сих пор только мечтаю о макбуке.
    Ответ написан
  • Как сохранить правила iptables после перезагрузки Ubuntu?

    Infra_HDC
    @Infra_HDC
    R2AMO
    Вот решение, работающее на данный момент для Debian 6.0 и Debian 7.0, должно работать и в Ubuntu.
    Под суперпользователем:
    1. Делаем скрипт, выполняемый при поднятии интерфейса
      nano -w /etc/network/if-up.d/00-iptables
      
      #!/bin/sh
      iptables-restore < /etc/firewall.conf
      ip6tables-restore < /etc/firewall6.conf
    2. Даём право запуска этого скрипта
      chmod +x nano -w /etc/network/if-up.d/00-iptables
      
    3. Сохраняем в конфиг правила для IPv4
      iptables-save >/etc/firewall.conf
      
    4. Сохраняем в конфиг правила для IPv6
      ip6tables-save >/etc/firewall6.conf
      

    Извиняюсь, что не могу найти ссылку на первоисточник, но решение до того классическое, что вы его найдёте в гугле по слову 00-iptables со множеством примеров и модификаций. Насколько помню, вот так загружаю конфигурацию netfilter еще со времён Debian 5.0.
    Ответ написан
  • Доступ к данным с GPS-чипа из Linux на устройствах с Android?

    Infra_HDC
    @Infra_HDC
    R2AMO
    Если позволите, начну ответ с исторической преамбулы.
    По старой памяти погуглил на предмет связи GPS с COM-портом: на память, чипсет самого GPS-модуля, который меня интересовал, был SiRF-Star III, работавший через COM2: на скорости 4800 bps на моём ASUS P535 под управлением WM5/WM6.
    И вот смотрите, какие прекрасные вещи нашёл.
    1. Упоминание вот тут что-то про GPS через COM-порт (программный, разумеется, если это монолитный гаджет). Бросившийся в глаза кусок лога:
      18:08:44.178 GpsHalPlatfTTYOpen("/dev/ttyS2",115200)

      По моему скромному мнению, в терминологии стандарта RS232, основная част гаджета будет называться DTE, а модуль GPRS будет называться DCE.
      С этим разобрались: модуль GPS может работать через последовательное терминальное устройство — например, как обычный модем.
    2. Теперь о протоколе обмена, пример его описания можно посмотреть например в man 8 gpsd
      Там недвусмысленно написано, что для разных программных моделей различного железа протокол низкого уровня — разный, но gpsd умеет скрывать различия, предоставляя унифицированный протокол для общения с приёмником спутникового сигнала. Здесь же упоминается, что для связи с модемом могут использоваться не только COM-порты, но и шина USB.
    3. Убеждаетмся, что этот самый gpsd работает в Android, и нам не надо шаманить с байтами и битами, ни изучать внутренности конкретного нашего GPS-приёмника.
      Вот тут есть косвенное подтверждение нашей гипотезы: что gpsd работает не только на настольном Ubuntu, но и на гаджетном Android.

    Под рукой нет железа, чтобы проверить, но я бы копал в этом направлении.
    Практически. я бы начал с того, что подключился бы телнетом к localhost на TCP-порт, номер которого по умолчанию упомянут в вышеупомянутом man-е
    -S Set TCP/IP port on which to listen for GPSD clients (default is
    2947).

    и из того же man-а погонял бы командочки
    Every gpsd reply will start with the string «GPSD» followed by the
    replies. Examples:

    query: «p\n»
    reply: «GPSD,P=36.000000 123.000000\r\n»

    query: «d\n»
    reply: «GPSD,D=2002-11-16T02:45:05.12Z\r\n»

    query: «va\n»
    reply: «GPSD,V=0.000000,A=37.900000\r\n»

    Надеюсь, вы рассмотрите мой ответ не как готовое решение проблемы, а как некий намёк, куда, с точки зрения обычной логики, вполне можно рыть.
    Спасибо за внимание.
    Ответ написан
  • Читаете ли вы описания изменений при скачке обновлений к приложениям?

    Infra_HDC
    @Infra_HDC
    R2AMO
    Если заняться особо нечем — читаю. А если надо срочно что-то сделать на коммуникаторе, а под руку подвернулись обновления — нет. Включаю свой коммуникатор эпизодически, при этом каждый раз вылазит целая пачка обновлений, софта, про которого уже забываешь, что за нюансы были в предыдущих версиях. К тому же, модель старенькая, на ней стоит антивирус, и пока дождёшься закачки обновлений, уже теряется всякое желание во что-то там вникать.
    H/W: HTC Wildfire
    S/W: Android 2.2.1
    Программы:
    наиболее используемые: Dr.Web Light, DropBox, Gmail, KeePassDroid, piBalance, Play Market, Speed Test, Wifi Analyzer, Youtube, Интернет (т.е. встроенный браузер).
    используемые редко: AndChat, Locator, LocatorDroid, SoundHound, Teeter, Яндекс.Карты, Яндекс.Метро, Сканер Штрих-кода, Яндекс-Электрички.
    Функциональные новшества менее привлекают внимание, чем изменения в правах, о которых просят программы, т.к. у всех на слуху запугивания вирусами, которые отправляют SMS на платные номера, программы-шпионы и т.п. Функциональные новшества не привлекают внимания потому, что если программа понравилась, уже стоит, то новые ее возможности выглядят как бы нелогично по сравнению с её уже известной практической пользой, и даже иногда мешают, увеличивая когнитивное сопротивление приложения за счёт изменения пользовательского интерфейса, его новизны. В основном интересуют изменения с целью сокращения ошибок и очевидных ляпов, а также с целью привести приложение соответствие с реальностью сегодняшнего дня (например, карта метро).
    Ответ написан
  • МикроИБП(UPS) для роутера. Что проще купить или сделать?

    Infra_HDC
    @Infra_HDC
    R2AMO
    POWERCOM WOW 300, 300ВA как один из вариантов. Но вот тут о нём есть не очень отзывы, к тому же, он без управления (что критично, если у Вас роутер на PC-архитектуре, и умеет общаться с ИБП). Поэтому для этой задачи просто взял ИБП APC Back-UPS CS 500 + Сетевой фильтр IPPON BK112 с входной вилкой IEC320 (Для ИБП).
    Ответ написан
  • gettext — перевод с русского

    Infra_HDC
    @Infra_HDC
    R2AMO
    Внесу ясность в терминологию. Сейчас такую форму множественного числа относят — по версии Википедии — к пережиткам двойственного числа в современном русском языке. Согласно философии именования строк в файле .po, в Вашем случае, его содержимое должно было бы выглядеть как-то так:
    msgid "%d день назад"
    msgid_dual "%d дня назад"
    msgid_plural "%d дней назад"
    msgstr[0] "%d day ago"
    msgstr[1] "%d days ago"

    Если бы, конечно, такой вариант использования библиотеки gettext был в природе.
    Ответ написан
  • DEB пакеты gcc_4.7.1 или clang_3.1?

    Infra_HDC
    @Infra_HDC
    R2AMO
    gcc 4.7.1
    clang 3.1
    вторую ссылку на ресурсе можно найти в восьми вариантах
    Ответ написан