среда, 28 сентября 2011 г.

Чтобы не забыть. Пример использования windows USB принтера (опубликовано на [harbour-users] Harbour + Windows + Printer USB пользователем Itamar M. Lisn Jr.)
  
/*
 * $Id: testprn.prg 13647 2010-01-19 22:19:54Z vszakats $
 */

#include "common.ch"
#include "hbwin.ch"

PROCEDURE Main( cPar1 )
  LOCAL nPrn := 1
  LOCAL cBMPFile := Space( 40 )
  LOCAL aPrn := WIN_PRINTERLIST()
  LOCAL GetList := {}

  CLS

  IF Empty( aPrn )
     Alert("No printers installed - Cannot continue")
     QUIT
  ENDIF

  DO WHILE nPrn != 0
     CLS
     @ 0, 0 SAY "Win_Prn() Class test program. Choose a printer to test"
     @ 1, 0 SAY "Bitmap file name" GET cBMPFile PICT "@K"
     READ
     @ 2, 0 TO MaxRow(), MaxCol()
     nPrn := AChoice( 3, 1, MaxRow() - 1, MaxCol() - 1, aPrn, .T.,, nPrn )
     IF nPrn != 0
        PrnTest( aPrn[ nPrn ], cBMPFile, iif( ISCHARACTER( cPar1 )
.AND. Lower( cPar1 ) == "ask", .T., NIL ) )
     ENDIF
  ENDDO

  RETURN

STATIC PROCEDURE PrnTest( cPrinter, cBMPFile, lAsk )
  LOCAL oPrinter := Win_Prn():New( cPrinter )
  LOCAL aFonts
  LOCAL x
  LOCAL nColFixed
  LOCAL nColTTF
  LOCAL nColCharSet

  oPrinter:Landscape := .F.
  oPrinter:FormType  := WIN_DMPAPER_A4
  oPrinter:Copies    := 1
  IF ISLOGICAL( lAsk )
     oPrinter:AskProperties := lAsk
  ENDIF

  IF ! oPrinter:Create()
     Alert( "Cannot Create Printer" )
  ELSE
     IF ! oPrinter:startDoc( "Win_Prn(Doc name in Printer Properties)" )
        Alert( "StartDoc() failed" )
     ELSE
        oPrinter:SetPen( WIN_PS_SOLID, 1, HB_WIN_RGB_RED )
        oPrinter:Bold( WIN_FW_EXTRABOLD )
        oPrinter:TextOut( oPrinter:PrinterName + ": MaxRow() = " +
Str( oPrinter:MaxRow(), 4 ) + "   MaxCol() = " + Str(
oPrinter:MaxCol(), 4 ) )
        oPrinter:Bold( WIN_FW_DONTCARE )
        oPrinter:NewLine()
        oPrinter:TextOut("   Partial list of available fonts that are
available for OEM_")
        oPrinter:NewLine()
        oPrinter:UnderLine( .T. )
        oPrinter:Italic( .T. )
//       oPrinter:SetFont( "Courier New", 7, { 3, -50 } )  // Compressed print
        nColFixed   := 40 * oPrinter:CharWidth
        nColTTF     := 48 * oPrinter:CharWidth
        nColCharSet := 60 * oPrinter:CharWidth
        oPrinter:TextOut( "FontName" )
        oPrinter:SetPos( nColFixed )
        oPrinter:TextOut( "Fixed?" )
        oPrinter:SetPos( nColTTF )
        oPrinter:TextOut( "TrueType?" )
        oPrinter:SetPos( nColCharset )
        oPrinter:TextOut( "CharSet#", .T. )
        oPrinter:NewLine()
        oPrinter:Italic( .F. )
        oPrinter:UnderLine( .F. )
        aFonts := oPrinter:GetFonts()
        oPrinter:NewLine()
        FOR x:= 1 TO Len( aFonts ) STEP 2
           oPrinter:CharSet( aFonts[ x, 4 ] )
           IF oPrinter:SetFont( aFonts[ x, 1 ] )       // Could use
"IF oPrinter:SetFontOk" after call to oPrinter:SetFont()
              IF oPrinter:FontName == aFonts[ x, 1 ]  // Make sure
Windows didn't pick a different font
                 oPrinter:TextOut( aFonts[ x, 1 ] )
                 oPrinter:SetPos( nColFixed )
                 oPrinter:TextOut( iif( aFonts[ x, 2 ], "Yes", "No" ) )
                 oPrinter:SetPos( nColTTF )
                 oPrinter:TextOut( iif( aFonts[ x, 3 ], "Yes", "No" ) )
                 oPrinter:SetPos( nColCharSet )
                 oPrinter:TextOut( Str( aFonts[ x, 4 ], 5 ) )
                 oPrinter:SetPos( oPrinter:LeftMargin, oPrinter:PosY
+ ( oPrinter:CharHeight * 2 ) )
                 IF oPrinter:PRow() > oPrinter:MaxRow() - 16  //
Could use "oPrinter:NewPage()" to start a new page
                    EXIT
                 ENDIF
              ENDIF
           ENDIF
           oPrinter:Line( 0, oPrinter:PosY + 5, 2000, oPrinter:PosY + 5 )
        NEXT
        oPrinter:SetFont( "Lucida Console", 8, { 3, -50 } )  //
Alternative Compressed print
        oPrinter:CharSet( 0 )  // Reset default charset
        oPrinter:Bold( WIN_FW_EXTRABOLD )
        oPrinter:NewLine()
        oPrinter:TextOut( "This is on line" + Str( oPrinter:Prow(), 4
) + ", Printed bold, " )
        oPrinter:TextOut( " finishing at Column: " )
        oPrinter:TextOut( Str( oPrinter:Pcol(), 4 ) )
        oPrinter:SetPrc( oPrinter:Prow() + 3, 0 )
        oPrinter:Bold( WIN_FW_DONTCARE )
        oPrinter:TextOut( "Notice: UNDERLINE only prints correctly if
there is a blank line after", .T. )
        oPrinter:TextOut( "        it. This is because of :LineHeight
and the next line", .T. )
        oPrinter:TextOut( "        printing over top of the
underline. To avoid this happening", .T. )
        oPrinter:TextOut( "        you can to alter :LineHeight or
use a smaller font, or use :SetBkMode( WIN_TRANSPARENT )" )
        oPrinter:NewLine()
        oPrinter:NewLine()
        oPrinter:SetFont( "Lucida Console", 18, 0 )  // Large print
        oPrinter:SetColor( HB_WIN_RGB_GREEN )
        oPrinter:TextOut( "Finally some larger print" )
        oPrinter:Box(   0, oPrinter:PosY + 100, 100, oPrinter:PosY + 200 )
        oPrinter:Arc( 200, oPrinter:PosY + 100, 300, oPrinter:PosY + 200 )
        oPrinter:Ellipse( 400, oPrinter:PosY + 100, 500, oPrinter:PosY + 200 )
        oPrinter:FillRect( 600, oPrinter:PosY + 100, 700,
oPrinter:PosY + 200, HB_WIN_RGB_RED )

//       To print a barcode;
//       Replace 'BCod39HN' with your own bar code font or any other font
//         oPrinter:TextAtFont( oPrinter:MM_TO_POSX( 30 ),
oPrinter:MM_TO_POSY( 60 ), "1234567890", "BCod39HN", 24, 0 )
//
        PrintBitMap( oPrinter, cBMPFile )

        oPrinter:EndDoc()
     ENDIF
     oPrinter:Destroy()
  ENDIF

  RETURN

STATIC PROCEDURE PrintBitMap( oPrn, cBitFile )
  LOCAL oBMP

  IF Empty( cBitFile )
     *
  ELSEIF ! hb_FileExists( cBitFile )
     Alert( cBitFile + " not found " )
  ELSE
     oBMP := Win_BMP():New()
     IF oBmp:loadFile( cBitFile )

        oBmp:Draw( oPrn, { 200, 200, 2000, 1500 } )

        // Note: Can also use this method to print bitmap
        //   oBmp:Rect := { 200, 200, 2000, 1500 }
        //   oPrn:DrawBitMap( oBmp )

     ENDIF
     oBMP:Destroy()
  ENDIF

  RETURN

пятница, 11 марта 2011 г.

теперь в инете пойдет поток освященных битов.

http://www.lenta.ru/news/2011/03/10/noevil/
Скорее всего это они для "чтобы постебаться". Других объяснений нет. Ну или им из правительства спустили директиву "срочно обсвятить, или мы за себя не отвечаем! плата по таксе, такса в прейскуранте ЗАО РПЦ"

воскресенье, 20 февраля 2011 г.

Вот на новый год фотографировались, а получились призраки

Вот фотографировались на новый год. на следующий день сливал фотки на комп и нашел несколько интересных фоток. Вот первая - елка. просто елка, но если присмотреться - вокруг видны призрачные силуэты.










На следующем снимке Мои домочадцы, только как-то странно они выглядят.







А вот и все мы. Посмотрите, каие прозрачные! и никакого монтажа!
просто ошибка в настройке камеры!

Информация о фотографии
01.01.2011
1600×1200 пикс. – 238 Кб
Имя файла: SDC11980.JPG
Фотоаппарат: Samsung Techwin
Модель: 
ISO: 80
Экспозиция: 8.0 сек.
Диафрагма: 2.8
Фокусное расстояние: 6.3мм
Использовалась вспышка: Да
Широта: н/д
Долгота: н/д
(на первой фотке вспышка выключена) Вот  как то так и снимают призраков туристы. в темноте камера выставляет большую экспозицию, делает вспышку. Остальное дело фантазии или случайного "друга".Вот вам и привидения. Раньше я думал, что нужны какие-тио хитрые камеры, чтобы так сделать снимок, но опят показал, что это реально во вполне домашних условиях.
А вот напоследок еще снимочек 
Это снято на огненном шоу фаерщиков (надо сказать, что ребята - молодци! получил огромное удовольствие от шоу!)
на фотке имеет место быть круглый блик.
надожив несколько фильтров в GIMP ничего толком не увидел. Справа вверху - дорожный знак слева  тоже стнанный груг, но более бледный, а перед лицом девушки - яркий голубой круг. съемка велась на площадке перед ДК профсоюзов на Космонавтов. направление на люксор (знак обозначает пешеходную дорожку от ДК к Титова. Что там могло так бликовать?






воскресенье, 13 февраля 2011 г.

вот как-то понадобилось организовать цикл в блоке кода.

// выполняется блок кода пока истинно условие
function DoWhile(usl,action)
local ret
do while eval(usl)
   ret:=eval(action)
enddo
return ret
А вот и функции для накопления итогов в БД. Тут и создание сводного файла, и добавление записи.
 
//
// ФУНКЦИЯ НАКОПЛЕНИЯ ИТОГОВ В СВОДНОМ ФАЙЛЕ
// ПАРАМЕТРЫ : ключевое значение,aлиас области свода,добавляемый массив,
function disk_add(key_V,sel,mas)
  local i,s
  s:=select()
  if ! empty(sel)
     dbselectarea(sel)
  endif
  if !dbseek(key_V)
    dbappend()
    REPLACE key WITH key_V         //******************************
  endif
  aeval(mas,{|x,i|fieldput(i+1,x+fieldget(i+1))})
  dbselectarea(s)
return(NIL)

#define DEF_TYP  "C"

#define DEF_LEN  12
#define DEF_DEC  1
#define DEF_FCNT 10
#define DEF_NAME "_svod.dbf"
//
// ФУНКЦИЯ СОЗДАНИЯ СВОДНОГО ФАЙЛА
// ПАРАМЕТРЫ :
// ИМЯ,ТИП КЛЮЧА,ДЛИНА КЛЮЧА,КОЛИЧЕСТВО ГРАФ,массив форматов{{длина,дес.}, ...}
//_svod.dbf, "C",    10     ,    DEF_FCNT   , {...,{DEF_LEN,DEF_DEC},...}
function disk_CREATE(name,KEY_TYP,KEY_LEN,NUM,mas)
LOCAL I,FNUM,FLEN,FDEC,S,SS,NM,STRU:={}
SS:=SELECT()
IF NAME==NIL
  NAME:=DEF_NAME
ENDIF
IF KEY_TYP==NIL
  KEY_TYP:="C"
ENDIF
IF KEY_LEN==NIL
  KEY_TYP:=10
ENDIF
if valtype(mas)#"A"
  mas:={}
endif
if (fnum:=max(num,len(mas)))==0
   fnum:=DEF_FCNT
endif
aadd(stru,{"KEY",KEY_TYP,KEY_LEN,0})
for i:=1 to fnum
   nm:="P"+alltrim(str(i))
   flen:=if(i<=len(mas).and.valtype(mas[i,1])="N",mas[i,1],DEF_LEN)
   fdec:=if(i<=len(mas).and.valtype(mas[i,2])="N",mas[i,2],DEF_DEC)
   aadd(stru,{nm,"N",flen,fdec})
endfor
dbcreate(name,stru)
use (name) new exclusive
index on key to _tmp_ind
s:=SELECT()
DBSELECTAREA(SS)
return (S)
Вот откопал свой старенький простенький форматер для печати. еще в ДОС работал. Ну и заодно пару других функций: перевод любых данных в строку (удобно для отладки, например), суммирование данных в каком-то разрезе (это было нужно для формирования статистических "простыней".Это чем-то сходно с хэшами, но тогда я еще об этом не знал ;-) При большом объеме бывало мало памяти, так что пришлось потом писать функцию для накопления итогов в БД. Алгоритм тот же. работало достаточно быстро на 286 компах.
// Функция форматирования строк таблиц для печати
// ПОЛУЧАЕТ   : массив значений и массив,содержащий ширину граф.
// ВОЗВРАЩАЕТ : массив строк с отформатированными по ширине графами.
// ПРИМЕР
// a:="Олейников"
// b:="ИНЖЕНЕР-ПРОГРАММИСТ"
// c:=19011971
// d:=24
// e:=LineFormat({a,b,c,d},{10,8,8,4})
// ****************************************
//* e cтало равным -
//*{{"Oлейников  ИНЖЕНЕР- 19011971   24"+CHR(13)+CHR(10)},
//* {"           ПРОГРАММ              "+CHR(13)+CHR(10)},
//* {"           ИСТ                   "+CHR(13)+CHR(10)}}
// e:=LineFormat({a,b,c,d},{10,8,8,4},"|")
// ****************************************
//* e cтало равным -
//*{{"Oлейников |ИНЖЕНЕР-|19011971|  24|"+CHR(13)+CHR(10)},
//* {"          |ПРОГРАММ|        |    |"+CHR(13)+CHR(10)},
//* {"          |ИСТ     |        |    |"+CHR(13)+CHR(10)}}




#define EOL             (CHR(13)+CHR(10))


function LineFormat(MAS,MMM,x) // ЗНАЧЕНИЯ,ШИРИНА ГРАФ,разделитель
local lH:=0,ii:=0,i:=0,pos,fff,bbb,buf:="",RET:={},D:={}
local ND,priznak:=.f.,PPR,TMP,n:={},pnt,xx,lH1
D:=ACLONE(MAS)
lH:=len(mas)
lH1:=len(mmm)
 FOR I= 1 TO LH
  if i<=lh1
    ii:=i
   else
    aadd(mmm,mmm[ii])
  endif
  D[I]=XTOC(D[I],mmm[i])
  aadd(n,1)
 NEXT
 if x==NIL
   x=" "
 endif
*n=1
do while .t.
 priznak:=.f.
* buf=ltrim(x)
 for i=1 to Lh
  do while .t.
   TMP:=AT(";",substr(D[i],n[i],mmm[i]))
   IF TMP>1
     FFF:=TMP-1
     PPR:=1
    ELSeIF TMP=0
     FFF:=MMM[I]
     PPR:=0
    ELSeIF TMP=1
     n[i]++
     loop
   ENDIF
   exit
  enddo
  bbb:=substr(D[i],n[i],fff)
  buf+=(padr(bbb,MMM[I])+x)
  if !empty(bbb)
    priznak=.t.
  endif
  n[i]+=(FFF+PPR)                            // ЕСЛИ PPR=1 - ПРОПУСТИМ ;
 endfor
 if !priznak
     IF  LEN(RET)=0 ;  RET:={" "} ;  ENDIF
     exit
  else
   AADD(RET,RTRIM(buf)+EOL)
   buf:=""
 endif
enddo
return RET


* Функция перевода данных любого типа в строковый.
*  Правила перевода:
* строка - без изменения
* число  - строка
* дата   - строка
* объект - "объект"
* NIL    - "пусто!"
* блок кода - строка от результата
* массив    - слияние строк от элементов
* мемо      - мемо
* логическое- "истина" или " ложь "
function xtoc(parm,len,dec)
    local t:="",ln:=0,i:=0,p:=.f.,ret
    ret:=""
    t=valtype(parm)
    DO Case
        CASE t="A"
            ln=len(parm)
            For i=1 to ln
                ret:=ret+xtoc(parm[i])
            Next
        CASE t="B"
            ret:=xtoc(eval(parm))
        CASE t="C"
            ret:=parm
        CASE t="D"
            ret:=dtoc(parm)
        CASE t="L"
            ret:=if(parm,"истина"," ложь ")
        CASE t="M"
            ret:=parm
        CASE t="N"
            If !empty(len).and.!empty(dec)
               ret:=str(parm,len,dec)
             elseif !empty(len)
*               ret:=str(parm,len)
                IF LEN(ALLTRIM(STR(parm)))>len
                   RET:=REPLICATE("*",LEN)
                  ELSE
                   RET:=PADL(STR(PARM),LEN)
                ENDIF
             else
               ret:=str(parm)
            EndIF
            p:=.t.
        CASE t="O"
            ret:="объект"
        CASE t="U"
            ret:="пусто!"
        OTHERWISE
            ret:=".?."
   EndCASE
return ret


* Функция накопления итогов в двумерном массиве.
* перед вызовом необходим существующий двумерный массив;
* первый элемент в строке - ключ,остальные - значения
* к его элементам добавятся(по ключу) элементы массива для суммирования
*FUNCTION ADD (KEY,MAS,M)  //КЛЮЧ,MАССИВ СУММ И МАССИВ ДЛЯ СУММИРОВАНИЯ
* LOCAL LN:=0,NOM:=0,I:=0,ELEM:={},LN1,LN2
* IF !EMPTY(MAS).AND.(NOM:=ASCAN(MAS,{|x|x[1]==KEY}))>0
*   LN1:=LEN(MAS[NOM])-1
*   LN2:=LEN(M)
*   LN=MIN(LN1,LN2)
*   FOR I=1 TO LN
*      MAS[NOM,I+1]+=M[I]
*   ENDFOR
*   IF LN1
*     FOR I=1 TO LN2-LN1
*      AADD(MAS[NOM],M[ln+I])
*     NEXT
*   ENDIF
*  ELSE
*   LN:=LEN(M)
*   ELEM:={KEY}
*   FOR I=1 TO LN
*    AADD(ELEM,M[I])
*   ENDFOR
*    AADD(MAS,ACLONE(ELEM))
*  ENDIF
* RETURN MAS
*

вторник, 8 февраля 2011 г.

Образовательный стандарт

Образовательный стандарт.
не претендую на глубокий анализ - я не специалист и постараюсь не делать общих выводов. Так, по верхушкам, по цитатам. 
Вот читаем базу по  "Концепция духовно-нравственного развития и воспитания личности гражданина России " (страница 10):
"В советский период государство обрело всю полноту власти
над гражданином и его частной жизнью. Устраняя влияние церк
ви на общественную и личную жизнь, подавляя религиозное со
знание, советское государство само стало претендовать на роль
новой вселенской церкви. Спектр жизненных смыслов был сжат
до веры в коммунизм и служения коммунистической партии."
Бред какой-то! гундение типично-русских интеллигентиков.

там же на 21 странице вижу бредовый словесный понос:
"Педагогическая поддержка самоопределения личности, раз
вития её способностей, таланта, передача ей системных науч
ных знаний, умений, навыков и компетенций, необходимых
для успешной социализации, сами по себе не создают достаточ
ных условий для свободного развития и социальной зрелости
личности. Личность несвободна, если она не отличает добро от
зла, не ценит жизнь, труд, семью, других людей, общество, Оте
чество, т. е. всё то, в чём в нравственном отношении утвержда
ет себя человек и развивается его личность. Знания наук и нез
нание добра, острый ум и глухое сердце таят угрозу для челове
ка, ограничивают и деформируют его личностное развитие.
Духовно нравственное развитие и воспитание обучающихся
должны быть интегрированы в основные виды деятельности
обучающихся: урочную, внеурочную, внешкольную и общест
венно полезную. Иными словами, необходима интегратив
ность программ духовно нравственного воспитания. Одной
из таких программ может быть обучение духовным основам
религиозной культуры и светской жизни."
это почва для оправдания введения тех самых ОПК как обязательного предмета. Это очень оскорбляет мои атеистические воззрения.

В самом стандарте есть такой перл "
·формирование осознанного и уважительного отношения к традиционным российским религиям и религиозным организациям, к вере и религиозным убеждениям;
" - комментарий такой: с чего бы мне как-то осознанно уважать что-то, что само меня не уважает (ну например настойчиво прозелитят)? Нет, я буду всеми силами стараться привить ребенку настороженное отношение к любым религиозным проявлениям. Любая религия - искуственная несвобода, изначально объяснимая. в диком обществе она признана заменить совесть, но не сейчас. Она выполнилы свои функции и должна быть заменена.

Интересно, почему " элементарные представления о религиозной картине мира, роли традиционных религий в развитии Российского государства, в истории и культуре нашей страны; " не в предмете История средних веков, а в "Воспитание нравственных чувств и этического сознания: "

Почему вообще вот это "
·ознакомление по желанию обучающихся и с согласия родителей (законных представителей) с деятельностью традиционных религиозных организаций (путём проведения экскурсий в места богослужения, добровольного участия в подготовке и проведении религиозных праздников, встреч с религиозными деятелями);" включено в программу школы? Кто верит, что это будет добровольно? Я - нет. Хотя, посмотрим.
А!!! Вот и ответ " При разработке и осуществлении программы духовно-нравственного развития и воспитания обучающихся на ступени начального общего образования образовательное учреждение может взаимодействовать, в том числе на системной основе, с традиционными религиозными организациями, общественными организациями и объединениями гражданско-патриотической, культурной, экологической и иной направленности, детско-юношескими и молодёжными движениями, организациями, объединениями, разделяющими в своей деятельности базовые национальные ценности и готовыми содействовать достижению национального педагогического идеала. При этом могут быть использованы различные формы взаимодействия:" ! то есть если с попами будут взаимодействовать на системной основе - даже согласия родителей не спросят - включено в программу!


воскресенье, 6 февраля 2011 г.

дермократия

воистинно свободная и демокрасская страна:

Губернатор Белгородской обл. запретил День святого Валентина
Губернатор Белгородской обл. запретил День святого Валентина
В Белгородской области запретили праздновать День св. Валентина. Соответствующее поручение дал губернатор Белгородской области Евгений Савченко, передает РСН.

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

Директива благословлена архиепископом Белгородским и Старооскольским Иоанном и подписана первым замгубернатора области Олегом Полухиным. Чиновники, помимо контроля за исполнением поручения, также должны объяснить гражданам через...Читать далее >

попы ликуют! на очереди Новый год, Масленница, всенародное проклинание Пушкина за сказку о попе, закрытие оставшихся планетариев и сжигание персонала вместе с оборудованием, замена астрономии на закон божЫй.
Занимайтесь своими делами, господин Савченко! Фигней маяться мы и сами можем, без вашего участия.

среда, 26 января 2011 г.

Хочу сказать:

1) чтобы похоронить Ленина, сделайте сначала больше чем он.
2)не так страшен чеченский бандит(ка) с бомбой, как продажный русский гаишник.

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

Зарегистрируйтесь на DROPBOX и подарите мне 250М

В итоге никто не проиграет, но, мне почему-то кажется, что многие просто уйдут на сайт проекта, чтобы другому на халяву не подфортило ;-0

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

nibiru Нибиру 2012

Сколько крику, истерики и прочего маразма про эту самую Нибиру! Хех, такие душещипательные сУжеты по ящику! а почитать первоисточник - слабо! а , хотябы, посмотреть сайт http://astrobiology.nasa.gov/ask-an-astrobiologist/intro/nibiru-and-doomsday-2012-questions-and-answers - слабО!

Учите матчасть, одним словом.
Кстати, помните, показали тетку, которой принтер на нибирутском языке печатал? Ей кто нибудь драйвера поставил? Наверное она того загрызет за осквернение нибирутского. Как те правозащитники, которые вопят, что не надо им гебешной статистики по репрессиям всяким, они сами больше напридумают!

среда, 1 декабря 2010 г.

НАНО, оно такое нано!

зашел на сайт РОСНАНО. СОлидно! почитал статью - коллеги стали смотреть как на идиота - сильно и неприлично хихикал ;-)

http://www.rusnano.com/Post.aspx/Show/29135
"...В России стоимость электроэнергии уже выше, чем в США, и рост ее идет значительно быстрее. Принимая во внимание, что уже существуют опытные образцы полупроводниковых источников света со световой отдачей в 160 Лм/Вт, можно сказать, что, со временем, окупаемость светодиодных систем освещения будет происходить за меньшее время."

 Это учреждение, босс которого сначала был главным приватизатором, потом главным энергетиком.
В тексте, короче, говорится, через некоторое время, стоимость электроэнергии в России будет такова, что очень дорогие и экономичные светодиоды будут окупаться очень-очень быстро. Выгоднее будет строить светопроводы с солнечной стороны шарика. Представляете, такое оптоволокно, которое доставляет солнечный свет на завод! Зеленые уписиются от восторга! Ну или есть еще предложение - покупать китайские батарейки и ими освещаться, наши-то батарейки делать разучились.
Как вам это! Это в стране, в которой есть энергоресурсы, добыча, переработка и доставка потребителю БЕЗ НЕОБХОДИМОСТИ ТАСКАТЬ НЕФТЬ ИЗ-ЗА ОКЕАНА ОТ ВРАЖДЕБНЫХ ПОСТАВЩИКОВ!
РОИССЯ ВПЕРДЕ!

пятница, 26 ноября 2010 г.

Руссо-Маразмо

http://lenta.ru/news/2010/11/26/unstalin/ - чем Сталин был хуже остальных? Не умел так маскировать акции как остальные! Чем он Хуже Николашки-блаженного, нюни развалившего профукавшего державу? Чем он хуже Петра Первого с его реформами? да и на остальных посмотрите.
Нельзя идти на поводу у тех, кто задался целью лишить страну истории и опустить ее в этом до какой-то америки? А посмотрите на ту же америку! тут писать ничего не надо, достаточно почитать учебник истории (любой, какой хотите) о , например, расовой сегрегации, охоте на ведьм.
ХВАТИТ БРЕДА об уникальной кровожадности коммуняк и гэбни, об отсталости России! Они ни чем не выделяются на фоне остальных в истории России , да и всего мира. Проверьте и опровергните, только, чур, без подтасовок!

воскресенье, 14 ноября 2010 г.

для сборки hwgui примеров можно сделать hbmk.hbp файл:
======================
-lart_lgpl_2
-latk-1.0
-lcairo
-lfontconfig
-lfreetype
-lgdk_pixbuf-2.0
-lgdk-x11-2.0
-lgio-2.0
-lglib-2.0 
-lgmodule-2.0
-lgnomeprint-2-2
-lgobject-2.0
-lgtcgi
-lgtcrs
-lgthread-2.0
-lgtk-x11-2.0
-lhbcommon
-lhbcpage
-lhbdebug
-lhblang
-lhbmacro
-lhbpp
-lhbrdd
-lhbrtl
-lhbsix
-lhbvm
-lhbxml
-lhwgui
-lm
-lncurses
-lpango-1.0
-lpangocairo-1.0
-lpangoft2-1.0
-lpng12
-lprocmisc
-lrddcdx
-lrddfpt
-lrddntx
-lrt
-lxml2
-lz
-pthread
======================

Я скопировал библиотеки и инклюды hwgui в соответствуюшие директории Харбора. (/usr/local/lib/harbour и /usr/local/include/harbour)
В примере dbview.prg нужно поменять функцию hb_codepage на hb_cdpselect.

среда, 10 ноября 2010 г.

пример HWGUI

Чтобы не потерять: пример кода с использованием HWGUI. Найден где-то на форуме. (пример работает, но создается очень маленькле окошко - нужно его раздвинуть)

   #include "hwgui.ch"

   Function Main
   Local oMainWnd, oFont
   Local aCombo := {"First","Second" }

      PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13

      INIT WINDOW oMainWnd TITLE "Example" ;
         FONT oFont ;
         ON EXIT {||MsgYesNo("Really want to quit ?")}

      @ 20,10 EDITBOX "Hello, World!" SIZE 200,30

      @ 270,10 COMBOBOX aCombo SIZE 100, 150 TOOLTIP "Combobox"

      @ 120,60 BUTTON "Close" SIZE 150,30 ;
         ON CLICK {||oMainWnd:Close()}

      MENU OF oMainWnd
         MENUITEM "About" ACTION MsgInfo("First HwGUI Application")
      ENDMENU

      ACTIVATE WINDOW oMainWnd

  Return

вторник, 9 ноября 2010 г.

кодировки в консоли Linux

Вот попробовал последавать наставлениям Петра и попробовать использовать другие функции работы с кодировками. Итак:
-----------------------------------------------------------
REQUEST HB_CODEPAGE_RU1251
REQUEST HB_CODEPAGE_RU866

Function Main ()
local cMsg866, cMsg1251,mtest1251:="1234567890",mtest866:="1234567890",i
clear

cMsg866 := '�ਢ�� 866...' //привет 866
cMsg1251 := '������ 1251' //привет 1251
 
// тут про яркий синий воздушный шарик
 
arr866:={"�ન�", "�����", "���������", "��ਪ", "�ન�", "ᨭ��", "���������", "��ਪ"}
 
arr1251:={"�����", "�����", "���������", "�����", "�����", "�����", "���������", "�����"}

? '=====111================'

hb_setTermCP("RU866","RU866")

? 'HB_CDPSELECT( "RU866" )'
? cMsg866
? cMsg1251

hb_setTermCP("RU1251","RU1251")

? 'HB_CDPSELECT( "RUWIN" )'
? cMsg866
? cMsg1251


hb_setTermCP("","") // reset codepage to default value

? "=====222====================="

HB_CDPSELECT( "RU1251" )
?
?"CDPSELECT initial 1251:"
for each i in arr1251
  ? " ", i
end

?"CDPSELECT sorted:"
asort (arr1251)
for each i in arr1251
  ? " ",i
end

HB_CDPSELECT( "RU866" )
?
?"CDPSELECT initial 866:"
for each i in arr866
  ? " ",i
end

?"CDPSELECT sorted:"
asort (arr866)
for each i in arr866
  ? " ",i
end

? "=====333====================="

hb_setTermCP("RU1251","RU1251")
?
?"termcp initial 1251:"
for each i in arr1251
  ? " ", i
end

?"termcp sorted:"
asort (arr1251)
for each i in arr1251
  ? " ",i
end


hb_setTermCP("RU866","RU866")
?
?"termcp initial 866:"
for each i in arr866
  ? " ",i
end

?"termcp sorted:"
asort (arr866)
for each i in arr866
  ? " ",i
end

? "=====444====================="

dbCreate( "Nakl1.dbf", { {"f1251","C",10,0},{"f866","C",10,0} } )

hb_setTermCP("RU1251","RU1251")

@ 10,10 say "enter test" get mtest1251
read
? mtest1251

hb_setTermCP("RU866","RU866")

@ 10,10 say "enter test" get mtest866
read
? mtest866

use "Nakl1.dbf" new

Append blank
1->f1251:= mtest1251
1->f866:=mtest866
close all

Return Nil

-----------------------------------------------
Ну с кодом , наверное, все понятно. сначала демонстрация hb_setTermCP("ККК","ККК"), потом HB_CDPSELECT( "RU1251" ), потом ввод с клавиатуры, запись в БД в разных кодировках. Результат обнадеживает! данные записались в нужных кодировках. Теперь нужно бы проверить как поведет себя база с индексами, но это как нибудь потом. После проверки этого кода на винде.
-----------------------------------------------
проверил на wine - нормально видно только кодировку 1251, в которой , собственно он, wine, и работает.

понедельник, 8 ноября 2010 г.

кодировка при вводе

Вот какой ответ получен на форуме http://clipper.borda.ru :

Кроме уже освоенной вами hb_cdpSelect,
Harbour предлагает такие функции hb_setDispCP(), hb_setKeyCP(), hb_setTermCP().

Так, что есть выбор - перевести локаль в KOIR-8r и при помощи указанных функций добиться желаемого результата

или разблокировать экспериментальную поддержку UTF8 в исходниках, перекомпилировать Harbour и дальше опять с помощью setDispCP(), hb_setKeyCP() получить желаемое.

Все подробности ищите в ChangeLog

P.S. Я не линуксоид, больше чем советом, не совсем иногда уместным , помочь не смогу.

------------------------
Спасибо, уважаемый Петр! Все коротко, ясно и по теме. При первой возможности попробую. К сожалению возможности не всегда соответствуют желанию ;-)

суббота, 6 ноября 2010 г.

попытка собрать hwgui на ubuntu

запускаем
 hbmk2 hwgui.hbm

в результате куча ругани, что не найдены файлы windows.h и shlobj.h

как компилировать под UBUNTU

Не забывайте, что Harbour устанавливается в /usr/local/bin , его инклюды /usr/local/include/harbour , либы в /usr/local/lib/harbour .
Эти папки надо обычно указать в Makefile.linux .
Это ,например, нужно сделать для letodb server и hwgui.

пятница, 5 ноября 2010 г.

GET на UTF-8

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