Blog

  • Супер МТС Вильный Киев

    Как оказалось, с 1 ноября МТС запустил новый prepaid тариф Супер МТС Вильный Киев. По сути внутри МТС 33 минуты звонков вообще бесплатны до конца следующего года. И платы за соединение тоже нет.
    Стоимость самого стартового пакета всего 10грн и нужно потом в течении 30 дней еще пополнить один раз на сумму от 5грн. По идее за 15 гривен на год можно разговаривать бесплатно по полчаса в день с любым номером МТС+Jeans.

    Лафа полная.

    С учетом того, что я маме звоню каждый день с работы, а во вторник она едет в санаторий, решил купить такую симку. В пятницу пошлив магазин МТС на Урицкого. Там оставался всего один пакет на витрине и продавцы не очень хотели его отдавать, но поклялись, что купив пакет “Супер МТС Вильный” он точно также переводится в “Супер МТС Вильный Киев“.

    Купили его, вставили в телефон и началась эпопея. Сначала позвонил на номер 111 (чтобы активировать). Потом попробовал послать СМС на номер 102209 для перевода в “Супер МТС Вильный Киев“, но получил ошибку (типа не могу отправить). Появилась идея о том, что Центр СМС для prepaid и для контрактников – разный, но в телефоне сохранилсяпредыдущий от контрактной симки. В моем Asus 320 я так и не нашел где это настраивается:-)

    Пришлось переставлять симку в Светын телефон. Оказалось, что телефон Центра СМС одинаковый, но смс-ка на 102209 все равно ек отправлялась. Там текст ошибки был другой, но сути не меняло. Я отправлял и с пустым телом сообщения, и с цифрами – без разницы.

    Решил позвонить на 111 в поддержку. На удивление  оператор отвечал сразу (не ждал по полчаса), но помощи не получал там ни разу за все звонки в течении двух дней.
    То у них база обновлялась и мне предлагали позвонить через пару часов (два разных оператора в разные дни мне такое сообщали). То предлагали повторить отправку смс чуть позже, то перекидывали на другого оператора и все повторялось заново.

    В итоге вчера вечером одна девочка из 111 объяснила, что скорее всего номер еще не активировался и предложила либо позвонить на любой номер (не 111), либо отправить смс на другой номер. Т.е. по сути совершить первую платную операцию.

    Но т.к. денег на этой симке еще небыло, пришлось освоить еще и переводы (*150*номер*сумма#) между симками prepaid. Перевел пятерку со старого Jeans и позвонил себеже. После этого смс на 102209 отправилась и получил в ответ сообщение о том, что заявка принята! Ура, первый уровень квеста пройден.

    В 3 часа ночи телефон пробибикал (пришла смс) о том, что план Супер МТС Вильный Киев активирован. С сегодняшнего дня можно разговаривать по 33 минут на шару. Второй уровень пройден тоже успешно!

  • Bank accounts

    • Checking Account (better with free options as free of monthly fees, free online banking and billing pay, free over-limit protection with linked credit card, etc.) – для текущих расходов.
    • Savings Account – Interest Earning Account with monthly fees – для хранения денег + небольшого заработка на них при условии немедленного и неограниченного доступа к ним. Заработанный интерес облагается налогом и часто уменьшается за счёт различных bank fees.
    • Certificate of Deposit (CD) – Interest Earning Time-limited Account. Интерес, как правило, выше, чем на Savings, но зато доступ к деньгам ограничен до конца срока, на который открыт депозит. При преждевременном снятии денег со счёта возможны штрафы и даже потеря накопленного интереса.
  • Рюноскэ Акутагава. В чаще

    http://lib.ru/INOFANT/RUNOSKE/thicket.txt

    Очень приятное чтиво. Люблю такой стиль…

  • Albert Schweitzer

    “A man does not have to be an angel in order to be a saint.”

  • wp-syntax

    Today I installed the WP_Syntax plugin for WordPress to highlight the code syntax (for Delphi, C# etc)
    Now I must edit all old posts and edit the text:-)

  • британские дети

    Оказывается вплоть до 1967 Британия посылала детей в эмиграцию в Канаду, Австралию, Новую Зеландию и другие колонии. Около 150 тыс. детей в возрасте от 3 до 14 лет были высланы для “осваивания” территорий и насаждения британской культуры. Из них 100 тыс отправились в Канаду, а остальные 50 тыс в Австралию. ЮАР и т.п.

    Ссылки:
    http://www.murdoch.edu.au/elaw/issues/v9n4/buti94.html
    http://www.telegraph.co.uk/news/worldnews/australiaandthepacific/6569274/Australia-to-say-sorry-to-abused-British-child-migrants.html

    Интересно, а у родителей кто-то спрашивал? Или это были бездомные? В любом случае за ними же кто-то должен был следить там (типа воспитателей).

  • drag’n’drop from external applications

    In Friday in our SIM (Shareware Information System) I added the possibility to drag’n’drop the mail content from external mailer (MS Outlook, Outlook Express etc)

    To add this feature you need:
    1. declare two new Cliboard formats that need to be registered:

    var
      CF_FILECONTENTS,
      CF_FILEDESCRIPTOR: Integer;initialization
    
      // Initialize the OLE libraries
      OleInitialize(nil);
    
      // Register the clipboard formats that we need to handle in the
      // OLE drag drop operation
      CF_FILECONTENTS := RegisterClipboardFormat(CFSTR_FILECONTENTS);
      CF_FILEDESCRIPTOR := RegisterClipboardFormat(CFSTR_FILEDESCRIPTOR);
    
    finalization
      OleUninitialize;
    

    2. in OnCreate event for your form allow window to accept drop events. Just execute the next code:

    OleCheck(RegisterDragDrop(Handle, Self));
    

    3. for your form you need implement a few methods for IDropTarget interface:

    type
      TfrmOrderWizard = class(TForm, IDropTarget)
      ...
      private
        { IDropTarget }
        function DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
                           var dwEffect: Longint): HResult; stdcall;
        function DragOver(grfKeyState: Longint; pt: TPoint;
                          var dwEffect: Longint): HResult; stdcall;
        function DragLeave: HResult; stdcall;
        function Drop(const dataObj: IDataObject;
                      grfKeyState: Longint; pt: TPoint;
                      var dwEffect: Longint): HResult; stdcall;
        { IUnknown
         Ignore referance counting }
        function _AddRef: Integer; stdcall;
        function _Release: Integer; stdcall;
        ...
    

    where:

    function TfrmOrderWizard.DragEnter(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
         var dwEffect: Longint): HResult;
    begin
      dwEffect := DROPEFFECT_COPY;
      Result  := S_OK;
    end;
    
    function TfrmOrderWizard.DragOver(grfKeyState: Longint; pt: TPoint;
         var dwEffect: Longint): HResult;
    begin
      dwEffect := DROPEFFECT_COPY;
      Result := S_OK;
    end;
    
    function TfrmOrderWizard.DragLeave: HResult;
    begin
      Result := S_OK;
    end;
    
    function TfrmOrderWizard._AddRef: Integer;
    begin
       Result := 1;
    end;
    
    function TfrmOrderWizard._Release: Integer;
    begin
      Result := 1;
    end;
    
    function TfrmOrderWizard.Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
      var dwEffect: Longint): HResult;
    const
      PT_TSTRING = ULONG(30);
      PT_UNICODE = ULONG(31);
      PR_BODY    = PT_TSTRING or ($1000 shl 16);
      PR_BODY_W  = PT_UNICODE or ($1000 shl 16);
    var
      aFmtEtc: TFORMATETC;
      aStgMed, stgmitem: TSTGMEDIUM;
      pData: PChar;
      pfgd: PFileGroupDescriptor;
      dwCount, dwfetch: Integer;
    
      stat: STATSTG;
      pstg: IStorage;
      pstm: IStream;
    begin
      {Make certain the data rendering is available}
      if (dataObj = nil) then
        raise Exception.Create('IDataObject-Pointer is not valid!');
      with aFmtEtc do
      begin
        cfFormat := CF_TEXT;
        ptd := nil;
        dwAspect := DVASPECT_CONTENT;
        lindex := -1;
        tymed := TYMED_HGLOBAL;
      end;
      {Get the data}
      OleCheck(dataObj.GetData(aFmtEtc, aStgMed));
      try
        {Lock the global memory handle to get a pointer to the data}
        pData := GlobalLock(aStgMed.hGlobal);
        { Replace Text }
        MemoOrder.Text := pData;
      finally
        {Finished with the pointer}
        GlobalUnlock(aStgMed.hGlobal);
        {Free the memory}
        ReleaseStgMedium(aStgMed);
      end;
    
      // Get the file descriptors
      with aFmtEtc do
      begin
        cfFormat := CF_FILEDESCRIPTOR;
        ptd := nil;
        dwAspect := DVASPECT_CONTENT;
        lindex := -1;
        tymed := TYMED_HGLOBAL;
      end;
      OleCheck(dataObj.GetData(aFmtEtc, aStgMed));
      try
        pfgd := PFileGroupDescriptor(GlobalLock(aStgMed.hGlobal));
        // Iterate each of the files
        for dwCount := 0 to pfgd.cItems-1 do
        begin
          // Set up for getting the file data
          with aFmtEtc do
          begin
            cfFormat := CF_FILECONTENTS;
            ptd := nil;
            dwAspect := DVASPECT_CONTENT;
            lindex := dwCount;
            tymed := TYMED_ISTORAGE;
          end;
          if (dataObj.GetData(aFmtEtc, stgmitem) = S_OK) then
          begin
            // IStorage (handle the outlook item)
            pstg := IStorage(stgmitem.stg);
            // Hard coded to open the outlook message item stream
            if (pstg.OpenStream('__substg1.0_1000001F', nil, STGM_SHARE_EXCLUSIVE or STGM_READ, 0, pstm) = S_OK) or
               (pstg.OpenStream('__substg1.0_1000001E', nil, STGM_SHARE_EXCLUSIVE or STGM_READ, 0, pstm) = S_OK) then
            begin
              pstm.Stat(stat, STATFLAG_DEFAULT);
              pData := AllocMem(stat.cbSize);
              try
                pstm.Read(pData, stat.cbSize, @dwFetch);
                // Set the msg body
                MemoOrder.Lines.Add(String(pData));
              finally
                // Free buffer memory
                FreeMem(pData);
              end;
              // Free the stream
              pstm := nil;
            end;
            // Free the storage
            pstg := nil;
            // Release the storage medium
            ReleaseStgMedium(stgmitem);
          end;
        end;
      finally
        // Unlock the memory
        GlobalUnLock(aStgMed.hGlobal);
        // Release the storage medium
        ReleaseStgMedium(aStgMed);
      end;
    
      Result := S_OK;
    end;
  • .coop domain

    Today I got the order with email address in .coop domain. Never saw such kind of domain names before:

    http://www.nic.coop

  • ShareIt Control Panel

    ShareIt changed the theming for own Control Panel. Now their CP is in white colors instead blue as before