среда, 19 февраля 2014 г.

Горизантальная перестановка записей в MySQL / SQL в списке

(порядковые номера вызывают кучу минусов
(в быстродействии перестановок),
хранение порядка целиком ограниченно максимальной размерностью списка
(1000 элементов в JSON могут обойтись ~4x1kb,
только на одном узле, а если больше?)
Поэтому выбраны динамические списки для хранения порядка.
А вообще лучше NoSQL использовать, например: neo4j
Псевдокод:
=============================
добавление(prev,this)
=============================
1. var @a=SELECT prev;
2. if EXIST(a):
3. INSERT
  this.prev=a;
  this;
=============================
перемещение(this,pos)
/*pos == idElem на место которого вставляем*/
=============================
1. c=count()
2. if posкопируем @соседей перемещаемого.
3.  SELECT this.prev() INTO @pr,
   this.next() INTO @tn;
сшиваем дырку под ними
4.  UPDATE tn.prev()=pr;||null
5.  UPDATE pr.next()=tn;||null
делаем разрыв перед pos, последним действием
  SELECT pos.prev INTO @ppv;
6.  UPDATE this.prev()=ppv; 
7.  UPDATE this.next()=pos;
8.  UPDATE ppv.next=this;
9.  UPDATE pos.prev=this;
==============================
удаление
==============================
1.  SELECT this.prev() INTO @pr,
   this.next() INTO @tn;
2.  UPDATE pr.next()=tn;
3.  UPDATE tn.prev()=pr;

Внимание!: Код экспериментальный. Вносите замечания.
Из замеченного: 
*все перезаписываемые связи 
предварительно дублировать в переменные, 
т.к. возможно наложение, например при 
одновременных вызовах со старого образца 
* предотвращение зацикливания

понедельник, 10 февраля 2014 г.

Как Я ликвидировал предприятие. Часть 1.

Ликвидация предприятия состоит из трех этапов. Первый этап - это закрытие банковских счетов, оповещение Государственного Вестника. Были утеряны все документы, поэтому восстановил их в налоговой, повторно печать зарегистрировал в Сбербанке и отписал в государственный вестник о потере печати. В случае не сообщения в Сбербанк в срок о замене печати, возможны санкции. В предприятии у нас получилось так, что кроме меня для ликвидации необходима была подпись второго лица, бухгалтера. Однако бухгалтер был уволен. Поэтому пришлось сначала подать документы о том, что я являюсь ликвидатором в единственном числе и бухгалтера нету. Что следует из Приказа, о возведении бухгалтерии и директорских полномочий на одно лицо. Повторно был взят образец подписи. И оттиск новой печати. После чего, уплатив задолженности перед банком, удалось закрыть счет, проигнорировав задолженности пришедшие на счет от контролирующих органов(Впрочем которые позже пришлось улпатить, однако на тот момент пренебрежение данным моментом позволило продвинуться в закрытии) Оповещен госвестник. --------------------------------------------------------------------------------- Второй этап. Срочная выписка из ЕГРЮЛ стоит 400 рублей, либо бесплатно в течении рабочей недели. Действительна нотариально в течении двух недель. Нужна для заверения Формы 15001 нотариусом. Услуга нотариуса у меня на тот момент 1000рублей. Нотариус потребовал Устав и Документ учредителя. Заверять необходимо !!!Подпись учредителя!!! Заверяем подписью в трех экзеплярах от камерального инспектора ликвидационный(Нулевой, у меня. Т.е. в пассиве только Уст.Капитал и там же Нераспределенная прибыль или непокрытый убыток, для баланса)баланс. Сдали форму 15001 и баланс в одно окно экземпляр, заверенный камеральным инспектором. Там нам поставили печать на двух других балансах. И два баланса заверенных туда, куда сдаем все документы по ликвидации. Сказали через неделю подойти со справкой из ПФР об отсутствии задолженностей. В ПФР заодно забежал в справочном заполнил бланк, где указал что мне надо получить справки и сверку. Там так же сказали подойти через неделю, забрать сверку. И зашел к своему инспектору. Проверил что ничего на меня нет. Она мне сделала на перед отчетность за квартал =) Может надо еще сверку из ФСС? Ждем ответа из Налоговой. За день до ответа попросили принести еще "Утверждение промежуточного ликвидационного баланса",

Какую максимальную нагрузку может выдержать сервер/CMS?

Заметка. Нагрузка считается в хитах (запросах), т.е. просмотрах страниц. 1000 пользователей ~ 5000 запросов в сутки ~ 1 запрос в 17 секунд. Это маленькая нагрузка. В среднем запрос во многих CMS обрабатывается за 0.05-0.5 секунды на обычном хостинге. Если больше, то либо кривая система, либо слишком большой объем данных. Если собственный сервер или VPS/DDS, то при использовании оптимизации, двухуровневой архитектуры веб-сервера, прекомпилятора и прочих фич, скорость работы может быть до нескольких сотен запросов в секунду. Joomla и многие другие open-source CMS обладают слабыми инструментами оптимизации, так как в первую очередь ориентируются на некоммерческие сайты с большим функционалом и некритичны к нагрузкам. Коммерческие системы и развитые open-source CMS обладают механизмами регулирования нагрузки, развитого кэширования, например, Drupal. 40 тысяч хостов в сутки - это примерно 200 тысяч хитов. Такую нагрузку могут выдержать многие CMS при наличии хорошего железа (средненький сервер на базе современного процессора, 1-2 Гб оперативной памяти). В CMS должно быть развито кэширование. Также увеличению производительности могут поспособствовать наличие прекомпилятора, веб-сервера под статику, использование быстрого memcached, оптимизация работы СУБД и прочие фенечки. При больших нагрузках большое значение имеет веб-сервер, база данных и общая архитектура системы. Диаметрально противоположные варианты развития событий: CMS может создавать статические страницы, которые потом отдаются веб-сервером. Но он может не справиться (если 2000 хитов в секунду). Можно поставить кеширующий сервер [1] или [2] и еще дополнительно организовать балансировку нагрузки в сочетании с очень тормозными движками. И все будет летать. Тут уж больше вопросы к проектировщику решения в целом и админу. Однако замечу, что "предел" живучести примерно такой (на моем выделенном сервере): чистый html + картинки под апачем: 800-1000 хитов в секунду Простенький скрипт php 4 + соединение с базой pconnect: 400-500 хитов То же самое просто mysql_connect: около 200 хитов Ну а дальше, если навороченная выдача товаров и т.п.: примерно 10-15 хитов в секунду предел, с оптимизацией до 50.

четверг, 5 декабря 2013 г.

Delphi Опеределение версии Windows 8, Windows 7, Windows XP, дополненная версия

function WhatWindowsIsInstalled: string;
var
  VerInfo: TOsVersionInfoExA;
begin
  FillChar(VerInfo, sizeof(VerInfo), 0);
  VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoExA);
  if not GetVersionExA(VerInfo.old) then
  begin
    VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoA);
    GetVersionExA(VerInfo.old);
  end;
  case VerInfo.old.dwPlatformId of
    VER_PLATFORM_WIN32_WINDOWS:
      if (Verinfo.old.dwMajorVersion = 4) and
        (Verinfo.old.dwBuildNumber = 950) then
        Result := 'Windows 95'
      else if (Verinfo.old.dwMajorVersion = 4) and
        (Verinfo.old.dwMinorVersion = 10) and
        (Verinfo.old.dwBuildNumber = 1998) then
        Result := 'Windows 98'
      else if (Verinfo.old.dwMinorVersion = 90) then
        Result := 'Windows Me';
    VER_PLATFORM_WIN32_NT:
      if Verinfo.old.dwMajorVersion = 3 then
        Result := 'Windows NT 3.51'
      else if Verinfo.old.dwMajorVersion = 4 then
        Result := 'Windows NT 4.0'
      else if Verinfo.old.dwMajorVersion = 5 then
       begin
        if Verinfo.old.dwMinorVersion = 0 then
          Result := 'Windows 2000'
        else if Verinfo.old.dwMinorVersion = 1 then
          Result := 'Windows XP'
        else if Verinfo.old.dwMinorVersion = 2 then
           Result := 'Windows Server 2003';
       end
      else if Verinfo.old.dwMajorVersion = 6 then
       begin
        if Verinfo.old.dwMinorVersion = 0 then
         begin
          if VerInfo.wProductType=VER_NT_WORKSTATION then
           Result := 'Windows Vista'
            else
          if VerInfo.wProductType<>VER_NT_WORKSTATION then
           Result := 'Windows Server 2008'
         end else
        if Verinfo.old.dwMinorVersion = 1 then
         begin
          if VerInfo.wProductType=VER_NT_WORKSTATION then
           Result := 'Windows 7'
            else
          if VerInfo.wProductType<>VER_NT_WORKSTATION then
           Result := 'Windows Server 2008 R2'
         end else
        if Verinfo.old.dwMinorVersion = 2 then
         begin
          if VerInfo.wProductType=VER_NT_WORKSTATION then
           Result := 'Windows 8'
            else
          if VerInfo.wProductType<>VER_NT_WORKSTATION then
           Result := 'Windows Server 2012'
         end else
        if Verinfo.old.dwMinorVersion = 3 then
         begin
          if VerInfo.wProductType=VER_NT_WORKSTATION then
           Result := 'Windows 8.1'
            else
          if VerInfo.wProductType<>VER_NT_WORKSTATION then
           Result := 'Windows Server 2012 R2'
         end
       end else
         begin
          try
           Result := 'Windows '+IntToStr(Verinfo.old.dwMajorVersion)+'.'+IntToStr(Verinfo.old.dwMinorVersion);
          except
           result:='Empty'
          end;
         end;
    VER_PLATFORM_WIN32s:
      Result := 'Win32s';
  end;
end;
Свежая информация по константам версий: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724834%28v=vs.85%29.aspx
(c)Izhik

воскресенье, 10 ноября 2013 г.

Правила размещения контента продающих страниц

peeep.us - сервис сохраненения копий страниц

peeep.us — сервис, позволяющий сохранить постоянную копию любой страницы в Интернете. Также позволяет сделать копию закрытой страницы, доступной только залогиненным пользователям сайта (например, Лепрозория). Сохранённые страницы также получают короткий адрес, который удобно использовать в микроблогах. То есть, по сути является вебдванольным аналогом кеша поисковых систем и web.archive.org — наполняется самими пользователями. www.peeep.us

пятница, 18 октября 2013 г.

yEd Graph Editor: редактор блок-схем (Freeware/Бесплатный) альтернатива MS Visio

yEd Graph Editor - отличная программа для построения блок-схем, с возможностью изменения размера карты, увелечения уменьшения поля, а так же обзорной миникартой как в Стратегиях. Прекрасная бесплатная альтернатива Visio от Microsoft

к тому же весит ~50 Мб

P.S//Очень мило и интуитивно понятно =) Это Вам не это(не MSVisio)