Задать вопрос
  • Как правильно организовать и защитить таблицу в которой будет хранится balance пользователя?

    ksusha
    @ksusha

    Зачем вам вообще хранить какой-то статус? При легальном апдейте баланса через приложение подписывайте все значащие данные в таблице баланса, передавая процедуре (или в запрос) какой-нибудь ключ. Подпись хранится в отдельном поле таблицы. Скажем, конкатенируете баланс и секретный ключ, берете sha1 от них - это подпись. При уменьшении баланса - такая же процедура: проверка подписи, если все ок - уменьшение баланса и подпись изменившихся данных. Если при попытке изменения баланса подпись не сходится, значит данные поломаны. Таким образом, не зная секретного ключа злоумышленник не сможет внести легальные изменения в таблицу балансов.
    Правда, в этом случае вам надо обеспечить сохранность ключа, хранить на диске не очень секьюрно.

    Кстати, тут все почему-то подумали о злобных хакерах со стороны. Не забываем, что сами сотрудники, имеющие доступ на продакшн, могут оказаться злоумышленниками. Когда речь идет о реальных деньгах нельзя полагаться на пушистость сисадминов/разработчиков.

    Ответ написан
    8 комментариев
  • Хочу, чтобы в модуле виделись глобальные переменные скрипта, возможно ли?

    ksusha
    @ksusha
    Сделайте отдельный кэширующий модуль, куда поместите переменную с кэшем и всякие стандартные методы для работы с ним (get, set итп), далее поместите настройки и закэшированные данные разных сайтов в кэш под разными ключами, и при каждом клике просто назначайте данные по нужному ключу текущими. Т.е. будет глобальный кэш для всех и кэш для конкретного сайта. Можно сделать переменные кэша доступными везде, но лучше сделать доступ к ним через функции кэширующего модуля.

    PS Объектно-ориентированность модуля конкретно в этой задаче вам ничем не поможет.
    Ответ написан
    5 комментариев
  • Как структруировать БД?

    ksusha
    @ksusha
    Категории:
    id название и т.п.

    Характеристики
    id | название | тип (чекбокс, список, текст, строка и т.п.) | варианты выбора, если есть, в каком-нить формате (json, к примеру)

    Пример:
    1 | Пол | list | [ «женский», «мужской» ]
    2 | Цвет | list | [ «синий», «красный», «зеленый» ]

    Это нужно для управления выводом формы редактирования/добавления товара какой-либо категории. В итоге у вас будет один и тот же код везде и не нужно заводить таблицу под каждую категорию отдельно. В данном случае ясно, что тип поля list, значит, это select либо группа радиобаттонов, к примеру. А варианты выбора распаковываются из json.

    Товары
    id | id категории | название…

    Как я поняла, у вас товар попадает в одну категорию, значит, можно сделать один ко многим.

    Связки:
    id характеристики | id категории

    Это чтобы было ясно какие поля для редактирования товара доступны в категории, и чтоб можно было привязать характеристику к нескольким категориям.

    id товара | id характеристики | значение характеристики

    Ну это понятно.

    Таким образом, при добавлении категории юзер может сам добавить туда нужные характеристики (или выбрать из уже существующих) и сохранить. Ну а при добавлении товара в эту категорию отрисуется красивая формочка, где можно заполнить значения всех характеристик.
    Ответ написан
    1 комментарий
  • Объясните НДС

    ksusha
    @ksusha
    Отправила раньше времени :(

    Про НДС нужно помнить только в контексте той системы налогообложения, которая применяется у вас. Вас прежде всего должно интересовать уменьшение налоговой базы. Последний раз изучала вопрос года два назад, но не думаю, что все сильно поменялось. Если у вас объект налогообложения «доходы минус расходы», то НДС, уплаченный поставщикам, просто списывается на расходы, уменьшая налогооблагаемую базу.

    Если вы реализуете товары и услуги, не облагаемые НДС, то входной НДС списывается на себестоимость. А возмещению из бюджета подлежит только НДС 0%, а «не облагается НДС» или «не является плательщиком НДС» — это принципиально другое.

    НДС 18% и так всегда перекладывается на плечи покупателя, об этом можете не беспокоиться.

    А в случае, если вы продаете товар или оказываете услугу плательщику НДС, то никакого счета-фактуры вы ему не должны, т.к. сами плательщиком не являетесь, то есть ваш контрагент от сделки с вами ничего не может принять к вычету по НДС.
    Ответ написан
    1 комментарий
  • Учебник по Сям (C, Си)

    ksusha
    @ksusha
    В дополнение к книжке Кернигана и Ричи рекомендовала бы «Практику программирования» Кернигана и Пайка, очень занимательное чтение, я для себя много нового узнала.
    Ответ написан
    Комментировать
  • Зачем нужна иерархия процессов в Unix?

    ksusha
    @ksusha
    Просто в Unix'е очень многое завязано на иерархии процессов, что и демонстрируют приведенные в цитате примеры.

    Вот еще примерчик, где используется иерархия.
    Когда процесс умирает, его родитель оповещается об этом. После этого он (родитель) удаляет из таблицы дескриптор умершего дочернего процесса. Если у процесса нет родителя, то этот дескриптор без перезагрузки ОС из памяти уже не удалить. Это расходует память. Дескриптор процесса весит не так чтобы уж очень мало — ~ 1,7 Кб.

    Если родитель умер раньше дочки, то родитель переназначается, часто это бывает как раз init, который периодически запрашивает информацию о своих потомках и убивает их дескрипторы.

    Еще реализация потоков (в Линуксе по крайней мере, где нет явной поддержки потоков) завязана на связи процессов между собой. Когда дочка порождается родителем, с помощью флагов указывается какие ресурсы шарить между ними. Плюс ко всему дочерний процесс наследует от родительского очень много свойств, напирмер UID, таким образом процесс запускается с теми же привилегиями, что и родительский.

    Если бы не было иерархии, все вышеперечисленное пришлось бы реализовывать как-то по-другому, но в Unix'e это так, просто особенность архитектуры, как Zigmar написал.
    Ответ написан
    Комментировать
  • Выбор вуза для будущего программиста в Москве?

    ksusha
    @ksusha
    В МАИ если поступать, то только на факультет «Прикладная математика и физика». Специальности на других факультетах со словами «прикладная информатика...» рассматривать не стоит(не голословна, первую вышку как раз на такой галимой специальности получаю).

    Сама сейчас учусь на прикладной математике в МАИ на второй вышке, очень довольна. Но, насколько я знаю, заветное место на кафедре «Вычислительная математика и программирование» дневникам нужно будет заслужить прилежной учебой, ибо троечников распределяют как раз на физику. Раньше по крайней мере так и было.

    Что касается физики, то в МАИ на этой специальности ее практически нет, так же как нет левых предметов, связанных с самолетостроением. Даже у экономистов в МАИ куча инженерно-начертательных предметов, а вот на вычислительной математике нет. Зато математическими дисциплинами мозг будут полоскать изрядно. Матан, насколько я знаю, у дневников 2 года идет, плюс всякие диффуры, урматы и прочая.))
    Ответ написан
    1 комментарий
  • Установка сервера SVN

    ksusha
    @ksusha
    >>корень репозитория должен быть корнем сайта и после коммита должен быть сразу доступен в браузере

    Пожалуй, включу режим зануды и внесу некоторую ясность. Репозиторий — это не просто набор файлов и папок. Репозиторий subversion использует организованную особым образом файловую систему. Обычно файлы хранятся в БД, либо являются файлами определенного формата, так что корень репозитория не может быть корнем сайта.

    Что касается использования файлов проекта по прямому назначению, нужно, во-первых, экспортировать рабочую копию(svn checkout). Это уже обычное дерево папок и файлов со скрытой поддиректорией .svn в каждом каталоге дерева. Такая локальная копия имеется у каждого участника проекта, который коммитит в центральный репозиторий. Но и эту копию нельзя использовать на продакшене, так как она содержит эти самые служебные поддиректории .svn. Для того чтобы от них избавиться, экспортируется чистая рабочая копия командой svn export. Вот теперь это ваш проект.

    Сейчас как раз разрабатываю веб-проект с помощью svn, могу поделиться как у меня все устроено.
    Есть VDS-ка, где крутится сервер svn. Есть две ветки репозитория — trunk и release. На локальном компе рабочая копия, по мере разработки коммичу все в trunk. Все скрипты тестирую на локалхосте. Девелоперская база данных общая, расположена на том же серваке что и svn.
    Ответ написан
    4 комментария
  • Посоветуйте МФУ для Linux с LAN-дыркой

    ksusha
    @ksusha
    У меня Brother MFC-7840WR, специально выбирала, чтобы были драйвера от производителя. Очень хороший МФУ, есть не только LAN, но и вай-фай. Правда, стоит порядка 12 штук и есть факс :)
    Но страничка с драйверами для Линукс меня покорила: welcome.solutions.brother.com/bsc/public_s/id/linux/en/

    Правда, есть проблема со счетчиком тонера, что меня в свое время сильно разозлило. Было понятно, что тонер в картридже был, но принтер отказывался печатать, говорил типа «нет тонера». В итоге кое-как удалось сбросить счетчик, нормально печатает до сих пор (полгода прошло). Картридж стоит, если не ошибаюсь, в районе 3 т.р.
    Ответ написан
    Комментировать