понедельник, 12 декабря 2011 г.

Прохоров объявил о выдвижении в кандидаты в президенты.

События после митинга стремительно развиваются:
Политическая жизнь в России заметно оживилась. Как всегда: во время выборов.
Кстати, становится теперь просматривается еще одна причина, по которой власть стремится развести выборы президента и думы. Народные волнения.

Поствыборный синдром.

По сведениям ryb.ru, оказывается, митинг в Ярославле был и собрал аж 2000 человек. Статья "Поствыборный синдром" на http://ryb.ru/2011/12/12/23012

воскресенье, 11 декабря 2011 г.

Перспективы после митинга.

Сегодня я шел домой со своим другом и мы обсуждали результаты митинга, попытки Справедливой России накрутить рейтинг "на волне", а так же аморфную реакцию КПРФ на произошедшие события.
К каким тезисам мы пришли:

  • КПРФ устраивают результаты выборов. Даже если они знают о фальсификациях, они не будут о них говорить, так как это будет на руку Справедливой России. 
  • ЛДПР заткнулись. Они не пойдут против партии власти.
  • Справедливая Россия стремится "на волне" приумножить политический капитал и двинуть Миронова в президенты. Они молодцы, но не будем забывать об искусственности этой партии. Это тень Единой России. Кто не верит - поднимите материалы времени создания Справедливой России. Весь ее рейтинг стоит на том, что ее искусственным образом отовсюду выгоняли. Поэтому я бы стал на президентских выборах голосовать не за Миронова, а за Явлинского.
  • Организация нового общественного движения возможна только вокруг сильной идеи. На митинге ничего конкретного кроме "Путин - Вор!" и "Требуем перевыборов!" не было. 
  • Для организации нового общественного движения нужен еще и сильный лидер, который сможет заставить аполитичную толпу думать о будущем страны или хотя бы даст предпосылки для этого.
  • Маловероятно, что следующий митинг соберет большее количество народу. Однако это возможно. Я сомневаюсь по причине того, что "случайные" люди скорее всего не пойдут на второй митинг.
  • Один товарищ очень хорошо сказал: "Если нет исполнительного органа, отвечающего за выполнение резолюций, то резолюции и не будут выполняться". Цитата не дословная, но суть примерно такая.
  • С большой вероятностью можно утверждать, что элита существующей власти напугана. Если новые митинги и не получат такой поддержки, как нынешний, то хотя бы сдвинется что-то в существующей власти. Это обнадеживает.
Становится видно, что путь к реально гражданскому обществу и правовому государству долог и тернист. Мы по нему идем. Как быстро - покажет XXI столетие.

суббота, 10 декабря 2011 г.

Митинг на Болотной площади в Москве 10 декабря 2011 года.

К счастью мои опасения не оправдались. Пока все вполне спокойно. Люди и полиция ведут себя в рамках правовых норм и, по-моему, могут требовать правового государства, справедливых выборов, порядка во власти. Полицейские по отзывам митингующих - молодцы.
Проблема в том, что единых претензий и предложений к власти нет. Толпа вышла на улицу. А дальше то что? Что делать власти? Что делать толпе , если ее не услышат? Идти на ОМОНовские дубинки? Стоит заметить, что отсутствие единой программы - одна из причин поражения белого движения после революции 1917 года. Отсутствие программы может стать и причиной поражения нынешней "движухи".
Значит Россия нуждается в новой партии (политическом общественном движении), которая бы выражала интересы тех кто сегодня вышел на улицы, обладала программой, которая их удовлетворит. Вопрос в том кто создаст и возглавит партию. Аудитория уже есть. Организации нет.
Власть же скорее всего не услышит призывов с улицы. Людям просто дали спустить пар. Как говорят на канале "Дождь", властьимущие надеются на приближение нового года и что обществом все "спустится на тормозах". Чинуши и хапуги не обратят на произошедшие события никакого внимания ибо мозг отсутствует.
Итак, мы показали власти, что наше мнение должно учитываться. Теперь их надо заставить действовать в интересах народа. Легитимными методами. Иначе мы зря голосовали ногами. 

четверг, 8 декабря 2011 г.

"Рекорд Ярославской области" не навредил репутации Вахрукова у федералов.

 ЕР — 37%, КПРФ — 21%, СР — 18%, ЛДПР — 10%.
Это результаты голосования в Ярославской области. За ЕР у нас проголосовал самый низкий процент среди всех субъектов РФ. Вахрукова - губернатора Ярославской области по идее должны снять, но...
http://top.rbc.ru/politics/08/12/2011/628861.shtml
Здесь мы видим, что о нем и речи не идет. Губернатора Я.О на "ковер к президенту" не вызвали. Что же это: расположение федералов, боязнь обнародовать "рекорд" или признак того, что моя область - какая-то тестовая площадка для мониторинга реальных данных властью, в которой действуют немножко другие правила, нежели в окружающей России?

Реплика товарища Прохорова о событиях на Чистых прудах.

Всем привет!
После Чистых прудов, Триумфальной и внутренних войск в центре Москвы, «Гостинки» в Питере, многочисленных креативных комментариев нашей власти (уж лучше бы не креативили и не комментировали) задумался: а какие могут быть выходы из данной ситуации? Революция? Конечно нет! Я против революций, я хорошо помню, чем в нашей стране и не только в ней, заканчивались все революции для людей
Главное дело власти – обеспечивать соблюдение конституционных прав граждан. Кто во власти отвечает за такую организацию политического процесса и пропаганду, что абсолютно аполитичные люди вышли на площади? Кто так укрепил и разрекламировал по ТВ ЕдРо, что люди в ужасе проголосовали хоть за кого-угодно, но только не за ЕдРо (Москва – город проголосовавший за коммунистов! Фантастика!). Кто вызывает теперь в столицу губернаторов, чтобы отчитывать их за плохой результат ЕдРа, как школьников (вообще-то их есть за что отчитывать кроме результата ЕдРа и вообще-то у них по закону другая работа)? Прямо КПСС в лучшем виде…
Общество развивается быстрее власти, и оно ушло сейчас в негатив. Это, в сочетании с теми изменениями, которые идут в мире, лишает нашу страну главного конкурентного преимущества. Я всегда выступал и выступаю за позитив и развитие. Ну что же, будем опять отвечать на любимый вопрос "Что делать?" .
Прежде всего, нужно констатировать важные аксиомы:
1. Значительное количество наших граждан считает выборы несправедливыми, а многие не пошли на выборы, потому что считают, что им не за кого голосовать.
2. После двух последних съездов ЕдРа тандема больше нет.
3. Нравится это кому-то или нет, Путин пока единственный, кто хотя бы как-то управляет этой неэффективной государственной машиной.
4. Революции в России всегда приводили к человеческим жертвам и снижению уровня жизни граждан.
5. Неадекватное отражение государственными телеканалами происходящего в стране работает против власти.
Предлагаю перечень увязанных между собой действий, рассчитанных на опережение текущей ситуации (пока власть все время отстает):
1. Во всех крупных и средних городах выделить удобные для граждан места для свободного выражения мнений (аналог Гайд-парка в Лондоне, в Москве, например, Парк им. Горького). Пусть интернет выйдет на улицу, и у власти будет возможность слушать своих граждан и принимать нужные решения (а не выводить "Наших", провоцируя противостояние в обществе, и не заниматься ремонтом трубопровода именно там, где люди хотят собраться).
2. Партия власти нуждается в серьезном реформировании, и сделать это должен человек, который вел эту партию на выборы. Медведев, как лидер списка, мог бы эффективно руководить Думой, сделав ее "местом для дискуссий" и центром законодательной инициативы.
3. В этом случае Путин по Конституции становится и.о. Президента и будет обладать всеми необходимыми полномочиями (что соответствует реальному политическому рейтингу) для проведения честных президентских выборов, которые должны радикально отличаться упрощенным доступом к возможности стать кандидатом в Президенты (для граждан снизить объем подписей в 10 раз, дать возможность выдвигать кандидатов не только парламентским партиям, но и общественным организациям и блокам). Это откроет мощный политический и социальный лифт, ощущение справедливости и правильности действий власти, даст победившему кандидату политический ресурс на проведение реформ и формирование нового правительства доверия.
4. После президентских выборов провести реформу политической системы (наши предложения были подробно изложены в http://md-prokhorov.livejournal.com/80796.html Манифесте "Правого дела" образца до 14.09.11) и в случае, если спокойствие и позитив в стране не восстановлены, провести новые выборы в Думу. И обществу, и власти предстоит пройти большой путь навстречу друг-другу. Но другого пути я не вижу, и своей стране не желаю…P.S. А кстати, напоследок задаю модный риторический вопрос: А не пора бы списать на берег "кукловодов" и "волшебников"? Плыть бы стало и быстрее, и свежее :-)
http://md-prokhorov.livejournal.com/84044.html

SELECT, INSERT, UPDATE, BLOB, MSEIDE, query

Сегодня мы поговорим об методах Insert, Edit, Open, Post, ApplyUpdates компонента tmsesqlquery.
tmsesqlquery предоставляет возможность редактировать с помощью вышеприведенных методов таблицу в базе данных написав лишь один SQL скрипт для запроса собственно таблицы из базы данных.
Итак, действующие лица:
  • con:tmseibconnection
  • writetran:tmsesqltransaction
  • queryW:tmsesqlquery
  • Таблица CONTESTS (CCID INTEGER NOT NULL, NAME CHAR (30), ABOUT BLOB SUB_TYPE 0 SEGMENT SIZE 4096);

writetran:=tmsesqltransaction.Create (nil);
writetran.Database:=con;
queryW:=tmsesqlquery.Create (nil);
queryW.Database:=con;
queryW.Transaction:=writetran;
queryW.SQL.SetText ('SELECT * FROM CONTESTS WHERE CCID = :pCCID');(*Оператор запроса данных из таблицы contests для редактирования. Операторы для обновления полей, вставки и удаления записей в query генерируются автоматически*)
queryW.params.ParamByName ('pCCID').AsInteger:=1;(*Присваиваем параметру значение*)
queryW.Open;(*Открываем query*)
queryW.Edit;(*Переводим query в режим редактирования записей*)
queryW.fields.FieldByName ('NAME').AsString:='OLOLO';
queryW.Post;(*Подтверждаем редактирование*)
queryW.ApplyUpdates;(*Отправляем отредактированные данные в базу данных*)
queryW.Close;(*Закрываем query*)
writetran.commit;(*Подтверждаем транзакцию. Данные записаны.*)

queryW.SQL.SetText ('SELECT * FROM CONTESTS WHERE CCID = :pCCID');
queryW.params.ParamByName ('pCCID').AsInteger:=1;
queryW.Open;
queryW.Insert;(*Переводим query в режим INSERT. Все дальнейшие действия с запрошенными полями - действия с полями записи, которая будет вставлена в выбранную скриптом таблицу *)
queryW.fields.FieldByName ('CCID').AsInteger:=2;(*Задаем значение поля CCID*)
queryW.fields.FieldByName ('ABOUT').AsString:='OLOLO2';(*Задаем значение поля NAME*)
queryW.Post;
queryW.ApplyUpdates;
queryW.Close;
writetran.commit;(*Подтверждаем транзакцию, данные записаны*)

queryW.SQL.SetText ('SELECT * FROM CONTESTS WHERE CCID = :pCCID');
queryW.params.ParamByName ('pCCID').AsInteger:=1;
queryW.Open;(*А это просто запрос на чтение*)
for i:=1 to queryW.RecordCount do //RecordCount - количество полученных записей
begin
  queryW.RecNo:=j; // RecNo - номер записи, с которой мы работаем через "fields"
  ID[i]:=queryW.fields.FieldByName ('CCID').AsInteger;
end;

writetran.commit;

Таким образом сверху приведены три откомментированных примера редактирования, вставки и чтения записей из таблицы в базе данных без использования SQL операторов UPDATE, INSERT, методов CreateBlobStream и тому подобного. Все есть в query. Просто и удобно. Blob поля полностью поддерживаются. Важно не забывать всегда из таблицы запрашивать ключ, которому мы ищем данные, иначе mseide не сможет сгенерировать операторы для редактирования, удаления и вставки записей.

Список упомянутых методов класса tmsesqlquery:

  • open - "открывает" query. Посылает первый запрос к СУБД и получает данные.
  • edit - перевод query в режим редактирования записей.
  • insert - перевод query в режим вставки записей.
  • post - подтверждение изменений для query.
  • applyupdates - загрузка подтвержденных изменений в базу данных, для их окончательного сохранения надо сделать commit транзакции в рамках которой работал query.
  • close - заканчивает работу query.
  • fields.FieldByName (s:string).AsType - доступ к полю s текущей записи с номером query.RecNo как к переменной с типом Type.
  • params.ParamByName (s:string).AsType - доступ к параметру s как к переменной с типом Type.
  • SQL.SetText (s:string) - устанавливает s как оператор, который будет выполнен СУБД после отправки первого запроса методом open. Можно еще делать так: SQL:=SELTASK где SELTASK:tsqlstringlist;

среда, 7 декабря 2011 г.

Моя реплика о поствыборной ситуации в России 5-6 декабря 2011 года.


У меня такое чувство, что все сошли с ума. За несколько дней произошли события, которые казались невозможными одно время. Митинг на чистых прудах, войска в Москве, выступления в Питере. Прошли думские выборы и что-то просто щелкнуло в головах у людей.
Что же будет на президентских выборах? По-моему то же самое. Надеюсь, время до них даст подготовиться немногочисленным умным людям во власти к волне новых выступлений. Не то чтобы я за Путина и Единую Россию, скорее даже наоборот... Просто Россия - ненормальная страна. Если в Европе чередуются правители: умный - дурак, то в России: дурак-тиран - дурак-тихий - дурак-реформатор. И еще такая чисто российская традиция: скинув старую власть надо заиметь политическую элиту еще более худшего качества, чем была (см. революцию 1917 года, Дворцовые перевороты и тому подобное). Поэтому революции и бунты в России - страшное дело. Преобразования у нас должны идти сверху. Воздействие на власть снизу должно вестись массово, легитимными методами. Это сохраняет государство и заставляет действовать в угоду обществу. Главная задача сейчас - преодолеть мощную социально-политическую разнородность общества. Она мешает и консолидации оппозиционых сил и проведению радикальных преобразований, которые ведут обычно к расколу общества в России.
Оппозиция, если уж она есть, должна научиться воздействовать на власть легитимными методами. Перевороты в современном мире, ни к чему хорошему не ведут. Ну скинут Медведева, Путина с компанией и что дальше? Новые придут. На местах ничего не поменяется. Как сидели хапуги, так и будут сидеть. Их когти глубоко впились в административную систему. 
Со всеми нашими проблемами по определению может справиться только государство. У него есть и полномочия и средства, которые, правда, оно не использует. Значит Наша задача - изменить существующее государство, сохранить его, заставить работать, а не ввергать и без того нестабильное, как всегда, расколотое российское общество в неизвестность. Наша задача - создать адекватную независимую оппозицию, не воровать и жить по закону. Государство в России, так как это высшая форма организации общества, должна остаться в целости для сохранения нашего суверенитета и занятых территорий. Закон должен всеми свято соблюдаться, так как это гарантия легитимности преобразований и безопасности общества и каждого гражданина в частности.
Опасность массовых выступлений для России огромна. Россия - страна с ядерным оружием, огромными запасами энергоресурсов, нестабильным обществом. 
  • На волне выступлений легко подняться "оранжевому" лидеру, который контролируя беснующуюся, ничего не осознающую толпу, захватит власть;
  • Россия - огромная страна, которая может не пережить очередной революции за последние 20 лет, так как сепаратные тенденции достаточно сильны.
  • Западные партнеры в случае чего постараются отхватить максимально большой "кусок".
Возникает еще один вопрос: двойные стандарты по отношению к подавлению демонстраций и выступлений. Очень советую посмотреть как это делалось в Англии. И почитать здесь: http://trueinform.ru/modules.php?name=News&file=article&sid=1786 и посмотреть здесь: http://www.youtube.com/watch?v=belRwME15HU. При этом считается, что Россия - полицейское государство. Кстати говоря, при полицейском государстве такого бардака не бывает.

воскресенье, 4 декабря 2011 г.

Недавно писал Мартину.



Set the select statement ("SQL" property = "select * from table1"), the insert, delete and update statements are built automatically. Then use tmsesqlquery.edit(), insert(), delete() and post() or cancel() and access the fields. In order to write the data to the server call tmsesqlquery.applyupdates(). In order to commit call tmsesqltransaction.commit() or commitretaining(). applyupdates() will be called automatically after post() if tmsesqlquery.controller.options dso_autoapply is set. commitretaining() will be called automatically after applyupdates if dso_autocommitret is set. commit() will be called automatically after applyupdates if dso_autocommit is set. Martin
Проще говоря у меня не работала загрузка данных в blob:
queryW:=tmsesqlquery.Create (nil);
queryW.Database:=con;
queryW.Transaction:=writetran;
queryW.StatementType:=stUpdate;
queryW.SQL:=UPDCONTEST;//UPDCONTEST is correct and given before
queryW.Prepare;   
queryW.params.ParamByName ('pNAME').AsString:=name.text;
queryW.params.ParamByName ('pABOUT').AsBlob:=about;
queryW.params.ParamByName ('pLOGO').AsBlob:=img;
queryW.params.ParamByName ('pID').AsInteger:=ID; 
queryW.ExecSQL;
writetran.commit;

Оказалось, что blob в firebird передается по специальному протоколу. Я спросил: "Может мне использовать CreateBlobStream", в ответ мне пришло загадочное сообщение: "А может использовать tmsesqlquery". Я призадумался. В голову по этому поводу так и не пришли мысли, поэтому я сказал прямо: "А как использовать tmsesqlquery?"В ответ Мартин написал эпичнейшее описание, с которого начинается эта запись в моем блоге. Описание работы с tmsesqlquery в mseide. Это просто и удобно:
  • query.sql.settext (select* from table1); //Это нужно чтобы выбрать записи и столбцы для работы. Скрипты для вставки в это таблицу, обновления записей и удаления генерируются автоматически.
  • Использовать методы tmsesqlquery.edit(), tmsesqlquery.insert(), tmsesqlquery.delete(), tmsesqlquery.post() или tmsesqlquery.cancel() для работы с выбранными полями.
  • ВСЕ! И никаких CreateBlobStream или подобного маразма!
Скажем дружно Мартину спасибо за это! =)

понедельник, 31 октября 2011 г.

О MSEIDE. Параметры в tmsesqlscript.

Что такое вообще так называемые "параметры" с точки зрения компонент, связанных с работой с СУБД? Это переменные в SQL скрипте. Т.е. перед моментом исполнения скрипта, на место переменной в скрипте поставляется конкретное текстовое или численное значение и скрипт отправляется СУБД на исполнение.
Синтаксис параметров в скрипте такой:
:VAR_NAME
Пример использования:
SELECT PASS, MAIL FROM MEMBERS WHERE MAIL = :pEMAIL;
:pEMAIL в данном случае - параметр.
Параметры добавляются в сам компонент скрипта (во всяком случае я так делал и это работало). Как всегда способа добавления два: "run-time"и графический.


В графическом:
  • Выделяем нужный компонент скрипта;
  • В инспекторе объектов ищем свойство params.coumt и задаем нужное количество параметров;
  • Раскрываем (слева плюсик появляется), перед нами появляется список параметров, которые можно спокойно редактировать. 
Поле name - имя параметра в SQL скрипте (тот же pEMAIL), двоеточие указывать не надо. Имена параметрам принято давать заглавными буквами с префиксом "p".
Поле DataType - тип данных.
Поле Size - размер параметра (поля value).


В "run-time" на мой взгляд все гораздо проще:
var VAR:TYPE;NAME:STRING;
...
script.params[0].AsTYPE:=VAR;
script.params[0].Name:=NAME;
Например:
var email:string;
...
query.SQL.SetText:=SELECT PASS, MAIL FROM MEMBERS WHERE MAIL = :pEMAIL;
query.params[0].AsString:=EMAIL;
query.params[0].Name:='pEMAIL';

Все! MSEIDE автоматически создает поля параметров при разборе sql-оператора. К ним обращается по номеру. Номер параметра - его номер от начала скрипта. При помощи AsType мы указываем тип параметра и задаем его значение. Так же можно обращаться к параметру по его имени.
Всегда сначала идет "AsType", а затем заполняются поля параметра.
Параметры есть и в tMseSqlScript и в tMseSqlQuery и во многих других компонентах, где нужно писать SQL-скрипты. Но об этом, и в частности о query, в следующей статье.

суббота, 8 октября 2011 г.

О MSEIDE. Добавление элементов интерфейса в программном коде, создание и соединение с БД.

Добавление элементов интерфейса в программном коде.
Для этого необходимо:
1) Создать виджет, принадлежащий или форме или другому потомку класса TComponent
2) Вставить созданный виджет туда, куда он принадлежит.
3) ...
4) PROFIT!!!


Например:
  var mainfo:tmainfo;Mark:tbooleanedit;
  ...
  Mark:=tbooleanedit.Create(mainfo.MainTable);
  mainfo.Maintable.InsertWidget (Mark);
  ...


Виджет создан! Если он не отображается, то надо свойству visible:=true, если не работает, что свойству enabled:=true. Примерно так! =)


Создание базы данных.
В MSEIDE богатый инструмент для работы с базами данных. Мы будет рассматривать это на примере работы с firebird 2.5.
Для создания базы данных firebird надо перетащить на форму следующие компоненты с вкладки DB окна Component Palette:
1) tmseibconnection - компонент подключения
2) tmsesqltransaction - компонент транзакции для каких-то темных делишек подключения (типа создания БД) =)
3) tmsesqlscript - компонент sql скрипта, который потом будет создавать нашу таблицу.
Дальше необходимо заполнить все поля связанные с местоположением и доступом к базе данных через инспектор объектов у компонента типа tmseibconnection.
После устанавливаем связь между tmseibconnection и tmsesqltransaction. Т.е. указываем через инспектор у компонента типа tmsesqltransaction в поле database наш компонент подключения, а у компонента подключения в поле transaction указываем наш компонент типа tmsesqltransaction.
Теперь они связаны и готовы к работе.
В mseide у компонента tmseibconnection есть специальный метод для создания базы данных - createdatabase (sql оператор создания базы данных).


Например:
var reg_tran:tmsesqltransaction; con:tmseibconnection;
...
con.createdatabase ('CREATE DATABASE ''C:\firdt.fdb'' user ''sysdba'' password ''MASTERKEY'' PAGE_SIZE 4096 DEFAULT CHARACTER SET ASCII;');
con.connected;//База данных создана и приложение выполнило к ней подключение


Теперь надо связать наш tmsesqlscript с подключением и транзакцией в рамках которой мы сейчас работаем. В принципе для скрипта без разницы через какую транзакцию работать. Но мы не будем их плодить, так что пускай все компоненты будут работать через одну и ту же транзакцию.
Чтобы связать tmsesqlscript опять надо воспользоваться инспектором объектов и указать в поле database наше подключение, а в поле transaction соответственно транзакцию.
В поле SQL компонента типа tmsesqlscript пишем скрипт. Для его исполнения необходимо будет сделать вызвать метод выполнения скрипта Execute и подтвердить транзакцию, через которую он работает.


Например:
  var reg_sctipt:tmsesqlscript;reg_tran:tmsesqltransaction;
  ...
  REG_SCRIPT.EXECUTE;//метод выполнения скрыпта
  reg_tran.commit;


Без подтверждения транзакции никакие изменения в БД не сохранятся!
Кстати, как вы заметили, я не сказал про параметры в tmsesqlscript. А они там есть! Увы, но о этом я расскажу в следующий раз =)

воскресенье, 11 сентября 2011 г.

Альфа Configure.

Альфа версия утилиты configure готова. БД и пользователи создаются от А до Я. Позавчера сделал очередную модификацию БД.
Еще добавится настройка СУБД firebird, сначала в бете замыкание на localhost, а затем другие (оптимизация и безопасность).
Сейчас все силы на буферный сервер.

четверг, 8 сентября 2011 г.

Ping

Я жив и реализую свои идеи в коде.
Похоже, на маленькую статью не тянет то, что я делаю. Вскоре начнет выкладываться немаленькое руководство по программированию TCP сокета в synapse, работе с СУБД firebird при помощи mseide, особенностям программирования под mseide и free pascal для начинающих.

четверг, 18 августа 2011 г.

В моей голове разброд

Решил упорядочить мысли.
Шифровать надо только конфиденциальную информацию, а не всю БД. То есть тексты решений, e-mail, логин и пароль. Безопасность логина и пароля обеспечивается СУБД Firebird, безопасность текстов решений и e-mail будет обеспечиваться алгоритмом TWOFISH. Осталось решить вопрос с генерацией ключа для алгоритма шифрования и вообщем-то все.
Еще шифроваться скорее всего будут системные таблицы необходимые для функционирования тестирующей системы.
Итак: частично переписываю генерацию БД, пишу генерацию системных таблиц, пишу триггеры защиты, разбираюсь с алгоритмом шифрования.
P.S А еще я еду на Авиамакс :333

воскресенье, 14 августа 2011 г.

В Петербурге

Пишу из северной Венеции. Не верьте, что в Питере 27 градусов как в прогнозе. Тут холодно и много иностранцев. Был в Эрмитаже, купил SICP. Все клево короче!

пятница, 29 июля 2011 г.

BLOB в FIREBIRD+MSEide

Сейчас передо мной встал вопрос: как хранить файлы в firebird? Ответ оказался прост: BLOB. Он быстрее, чем файловая система, а MSEide предоставляет очень удобные инструменты для работы с ним. "Какие?" - спросите вы. Но увы, о удобстве я читал на одном англоязычном форуме. Теперь мне стоит чуть покопаться в исходниках MSEide в поисках BLOB, и я выдам статью о работе с БД Firebird в MSEide. Осталось совсем немного =). Ждите.
Статья о работе с BLOB и другими полями:
http://aton4eg.blogspot.com/2011/12/select-insert-and-update.html

пятница, 22 июля 2011 г.

воскресенье, 17 июля 2011 г.

Небольшой отчет.

А знаете в чем подвох? В том, что для MSEide нет документации. Приходится писать буквально на ощупь, причем опыта написания клиент-серверных приложений у меня нет. Исходники MSEide очень помогают =).
Сейчас как-то так моей конфигурирующей утилитой создается БД, почти создается пользователь. Скрипт создания табличек тоже почти написан. Прогресс есть одним словом.
Валя делает ограничения для тестируемых процессов по времени, памяти, доступным функциям. При помощи job-сов если я не ошибаюсь.

суббота, 16 июля 2011 г.

MSEide+MSEgui

Я наконец определился на чем писать. Учусь работать с кодировками. Also, говорят, что нативный инструмент в MSEide для работы с firebird - один из самых лучших для этой СУБД.

среда, 13 июля 2011 г.

Ночь

Может эта запись и не о программировании, но все же.
Сейчас я засиживаюсь до поздней ночи. Сегодня например прочитал первые три части "Преступления и наказания" =). Но что интересно: в моем городе есть завод, который производит авиационные двигатели, и их по ночам испытывают. Представьте, весь город спит за исключением меня и ребят в испытательном цехе =). Зачастую я даже на балкон выхожу послушать эти волшебные звуки турбин. Такая вот техноромантика.

суббота, 2 июля 2011 г.

Как Валя говорит...

А Валя говорит, что очень муторно делать модуль работы с исходным кодом (это компиляция, вывод ошибок, и еще пара веселых вещей).


  22:49:00: ща там делаю модуль тестирования который включает в себя много всего) компиляция исходника, тестирование на одном тесте, еопирование итд...
  22:49:06: тут надо сделать исключения
  22:49:50: если прога например не найдет нужный файл то поидее надо выйти в исходную позицию итд...
Видимо он бедный создает десятки методов и анализирует сообщения компиляторов. Действительно вещи довольно нудные.


P.S Одна из основных концепций системы - простота развертывания. Именно благодаря этому мы надеемся занять какое-либо место в нише тестирующих систем.

пятница, 1 июля 2011 г.

Проектирование БД.

Завершено проектирование первой версии БД. Осталось провести небольшое расширение атрибутов аккаунта участника. Не исключено что придется все переделывать или отколоть от стержневой сущности "участник" несколько характеристических сущностей и одно обозначение. Сейчас мне должны дать консультацию. Вале же БД понравилась, но он не читал теорию по проектированию...


В процессе поиска СУБД для реализации проекта я перелопатил достаточно много форумов. Так забавно, программисты обожают забивать гвозди отбойным молотком. Зачем заставлять крутиться небольшие проекты на таких монстрах как Oracle, если есть бесплатные аналоги, которые предоставляют неплохой функционал и хорошее быстродействие на несколько сотен подключений и БД размером в несколько сотен гигабайт? Сейчас можно найти специализированный инструмент для решения практически любых задач в хранении данных.


P.S Надо будет написать кому-нибудь из тех кто держит олимпиадные сайты. Проконсультироваться о нагрузке на сервера не помешает.

среда, 29 июня 2011 г.

Немного о распределенной олимпиадной системе. Часть 1.

"Сегодня я ничего хорошего не сделал,
Сегодня я все сделал плохо."
- Василий К.
Этот эпиграф больше подходит мне, а не Вале. Я читаю теорию по проектированию БД и результатов у меня совсем немного. Только еще понял что такое ассоциация. Я занимаюсь менеджером аккаунтов. Валя вполне успешно (но сумбурно, олимпиадник же) реализует сервер тестирования.
Менеджер аккаунтов по сути - блок системы, включающий в себя СУБД firebird 2.5, БД по аккаунтам, чемпионатам, задачам и решениям и, вероятно, некую серверную программу. Мои задачи на данный момент: спроектировать базу данных, изучить firebird, и  придумать систему взаимодействия менеджера с остальными частями системы.

P.S Отрывок из описания концепции проекта:
9. Список контактов.
В состав клиента входит чат. Участник может добавить себе в список общения любого другого человека зарегистрированного на сервере. Эта функция отключаема: ее можно заблокировать в настройках чемпионата или сделать доступной только администратора.

Экзамены>работа>олимпиадная система.

Признаюсь сразу, я сначала усиленно готовился к переводным экзаменам, писал ООП и IPX, чтобы мне поставили зачет. Затем началась отработка и работа. Это обозначает, что я ухожу из дома в 8.30 и прихожу в 18.00. Вот такой у меня график.


Собственно говоря, началась работа над распределенной тестирующей олимпиадной системой. "Что за зверь?" - спросит наивный читатель. А это будет мощный инструментарий для проведения олимпиад по программированию, как в локальной сети, так и в интернете, поддерживающий обработку решений участников на нескольких серверах.

Схема такая:
Клиент
/\
\/
Распределяющая система <> База данных
/\
\/
 
Cервера тестирования


Теперь небольшое пояснение: У распределяющей системы есть функция: создать чемпионат. Затем, пользователь открывает клиент, регистрируется в чемпионате и участвует в нем. Результаты чемпионата (в т.ч. решенные задачи, кол-во ошибок) попадают в базу данных, где хранится информация о пользователе.


Функции компонент проекта:


  • Клиент - предоставление пользователю интерфейс работы с чемпионатами, своим аккаунтом и тестирующей системой.
  • Распределяющая система - распределяет присланные решения на проверку между серверами и занимается менеджментом базы данных.
  • Сервер тестирования - тестирует присланные решения и результаты отсылает обратно распределяющей системе. Вполне вероятно, что он будет отсылать результаты напрямую клиенту и напрямую будет работать с базой данных, чтобы снизить нагрузку на распределяющую систему. Оба варианта будут подвергнуты анализу.