Архив за месяц: Июнь 2011

Белоруссия

[youtube:iNr4yxyjNWM]

Смотрю в интернете на весь тот ужас, который происходит в Белоруссии в отношении несогласных. Есть видео, где добрый ментовский молодец угощает девушку дубинкой по голове. У меня теория, что в ментовку набирают по спецтестам. Чтобы можно было в человеке вытащить все человеческое. Не может человек так делать, это зверье.

  В голову пришла идея позавчера, а сегодня ее услышал в свежем подкасте Будама — сейчас хорошее время на получение статуса беженца в США. Причем по-моему не нужно попадать в оборот к силовикам, достаточно красочно рассказать, как от них убегал. В США прекрасно знают о состоянии демократии в Белоруссии.

Я не знаю, за что такое заслужили 3 прекрасные страны из эксСССР — Россия со своим Путиным, Украина с псевдоборьбой и олигархами и Белоруссия со своим тиранозавром? 

Airlines

Целый день искал семье билеты обратно из Украины. 

Наиболее выгодно выходит Киев — Нью Йорк (JFK или EWR — аэропорт Кеннеди или аэропорт в Ньюарке)
После изучения получил следующее:

  • Delta отменила прямой рейс. Жаль, хотя мой опыт полета на нем ужасен. Достаточно сказать, что после приземления в JFK мы всем салоном стояли и хлопали пилотам — спасибо, что посадили. Трясло неимоверно.
  • Аэросвит без конкуретна в лице Delta совершенно охамел и задрал цену. В топку.
  • British Airlines имеет неплохе цены, но неудобное время. К тому же, в конце июня нельзя купить билеты в оба конца с возвращением в середине июня следующего года
  • Аэрофлот — долго думал сайт, все время пишет не найдено маршрутов. Хотя они есть, я знаю. Но это аэрофлот и через Москву, не очень то и хотелось
  • LOT — польские линии. Приятные цены и время, нельзя купить обратно за год (как мне надо). Билеты «туда» уже раскуплены
  • Swiss Airlines — для меня оказалось дороговато
  • Austrian — прекрасные цены и стыковки самолетов через Вену. На радостях заполнил все, делаю покупку — бац, на сайте пишет извините, у нас проблемы. Не знаем финальные цены (это на сайте компании!).
    Звонили в Вену. Тетя бодрым голосом сказала, что о проблеме знают, через час спокойно купите. Через час не купил. Через два тоже. Попытался перезвонить — сбрасывают трубку. Подход вызвал дежавю времен СССР.
  • Lufthansa — Летали ей уже несколько раз. Хорошие цены,  но найти нормальное время не мог. Вылет из Киева в 5-30 утра и прилет в 8 вечера в JFK огорчил. Долго искал, наконец нашел идеальное время на другую дату со сладкой ценой.
    Сайт бодро рапортовал, что есть 2 места. Я с радостью стал покупать, и в итоге мне выдало, что мест нет. Следует учесть, что до этого у меня уже было 4 часа поисков + 3 часа попыток купить билет у Austrian. Немцы предложили перенабрать все с нуля. Стал перенабирать, выбрал все точно то же, нажал купить — бац! есть!. Через 5 секунд холодный душ — не те времена! И не JFK, а EWR! Твою перетвою в общем. По временам все более менее нормально, но по прилету в EWR остается всего час на пересесть в Jetblue и улететь в солнечное Орландо. Не успеют — будут куковать до 5-6 утра. Засада, в общем. Не знаю, чья проблема — или я выбрал не то, или сайт ступил, но в итоге осадок очень неприятный. Хотя цена сладкая =) Жена и доця долетят до USA и обратно через год за $1550

Напоследок — кракткая справка в первый раз летающим =) Есть такая фича — overbooking. Если вам такое говорят — соглашайтесь, даже если не понимаете )))) В общем, компании могут продать броней больше, чем есть мест. В таком случае возникает этот самый overbooking. Так как стоя в самолетах летать некомфортно 😉 вам могут предложить полететь завтра, за что вам вернут много денюжек. Если есть возможность — соглашайтесь! У нас была, но плохая: много людей ждало — и в Украине, и в Германии, когда летела моя семья. Хотя предложили вернуть $800. До сих пор сердце кровью обливается )))

 

Если есть вопросы по теме — спрашивайте!

Кто говорил, что Delphi прост — 2

Напишу ответ насчет того, что делает кусок кода из позапрошлого поста.
Изначально Irrlicht не имел враппера под Delphi. Человек, писавший враппер,
решил, что простого вызова DLL функций недостаточно, поэтому решил модифицировать
вызовы через исправление таблицы виртуальных функций (VMT) Именно это мы и видим в
данном коде — явно вирусоподобное действие =)

Сегодня нашел странный глюк с Delphi 2007. TOpenDialog открывается по Execute
у меня на машине (Win7) моментально, но после выбора файла (или отмены выбора)
программа зависает на 1-5 секунд в зависимости от фазы луны. Замечено только при
запуске билда, под отладчиком все работает идеально. Я в растерянности, но вроде бы это
персональная моя бага. На других ПК не заметил.  

Welcome to BlogEngine.NET 2.5

If you see this post it means that BlogEngine.NET 2.5 is running and the hard part of creating your own blog is done. There is only a few things left to do.

Write Permissions

To be able to log in to the blog and writing posts, you need to enable write permissions on the App_Data folder. If your blog is hosted at a hosting provider, you can either log into your account’s admin page or call the support. You need write permissions on the App_Data folder because all posts, comments, and blog attachments are saved as XML files and placed in the App_Data folder. 

If you wish to use a database to to store your blog data, we still encourage you to enable this write access for an images you may wish to store for your blog posts.  If you are interested in using Microsoft SQL Server, MySQL, SQL CE, or other databases, please see the BlogEngine wiki to get started.

Security

When you’ve got write permissions to the App_Data folder, you need to change the username and password. Find the sign-in link located either at the bottom or top of the page depending on your current theme and click it. Now enter «admin» in both the username and password fields and click the button. You will now see an admin menu appear. It has a link to the «Users» admin page. From there you can change the username and password.  Passwords are hashed by default so if you lose your password, please see the BlogEngine wiki for information on recovery.

Configuration and Profile

Now that you have your blog secured, take a look through the settings and give your new blog a title.  BlogEngine.NET 2.5 is set up to take full advantage of of many semantic formats and technologies such as FOAF, SIOC and APML. It means that the content stored in your BlogEngine.NET installation will be fully portable and auto-discoverable.  Be sure to fill in your author profile to take better advantage of this.

Themes, Widgets & Extensions

One last thing to consider is customizing the look of your blog.  We have a few themes available right out of the box including two fully setup to use our new widget framework.  The widget framework allows drop and drag placement on your side bar as well as editing and configuration right in the widget while you are logged in.  Extensions allow you to extend and customize the behaivor of your blog.  Be sure to check the BlogEngine.NET Gallery at dnbegallery.org as the go-to location for downloading widgets, themes and extensions.

On the web

You can find BlogEngine.NET on the official website. Here you’ll find tutorials, documentation, tips and tricks and much more. The ongoing development of BlogEngine.NET can be followed at CodePlex where the daily builds will be published for anyone to download.  Again, new themes, widgets and extensions can be downloaded at the BlogEngine.NET gallery.

Good luck and happy writing.

The BlogEngine.NET team

Кто говорил, что Delphi прост?

Есть хорошая библиотека IrrLicht Я ее использую в рабочем проекте. Кто то добрый написал под нее враппер для Delphi, который прекрасно работает, но ужасно «течет”. Пришлось руками править многое, чтобы убрать утечки. Вот один и примеров кода, с которым пришлось разбираться:

 

procedure PatchVMTbyVMT{_backup}(const vmt, VMCount: DWORD; const bToThisCall: Boolean; const pCustom: Pointer = nil);
const
//  t2s: array[0..3] of Byte = ($58, $51, $50, $E9);
  t2s: array[0..12] of Byte = ({ $CC,} $81, $3C, $24, $00, $00, $00, $10, $72, $03, $58, $51, $50, $E9);
  s2t: array[0..12] of Byte = ({ $CC,} $81, $3C, $24, $00, $00, $00, $10, $73, $03, $58, $59, $50, $E9);
var
  pcode: PDWORD;
  addr:  DWORD;
  vi:    PPointer;
  vp:    DWORD;
  i:     DWORD;
  pwrap: PDWORD;
  wsize: DWORD;
begin
  // unlock vmt
  if VirtualProtect(Pointer(vmt), 4 * VMCount, PAGE_READWRITE, vp) then begin
    // choose wrap
    if bToThisCall then begin
      pwrap := @t2s[0];
      wsize := SizeOf(t2s);
    end else begin
      pwrap := @s2t[0];
      wsize := SizeOf(s2t);
    end;
    // patch
    for i := 0 to VMCount - 1 do begin
      vi := Pointer(vmt + i * 4);
      if not Assigned(vi^) then
        Continue;
      // replace vmt
      if Assigned(pCustom) then
        vi^ := pCustom
      else begin
        // check alredy patched
        if (PDWORD(vi^)^ <> pwrap^) then begin
          // alloc mem for code
          GetMem(pcode, wsize + 4);
          VirtualProtect(pcode, wsize + 4, PAGE_EXECUTE_READWRITE, vp);
          // write wrapper
          CopyMemory(pcode, pwrap, wsize);
          // near jump
          addr := DWORD(pcode) - PDWORD(vi)^ + wsize + 4;
          // insert irr imagebase
          PDWORD(DWORD(pcode) + 3)^ := IRR_IMAGEBASE;
          // write jump to original vmt
          PDWORD(DWORD(pcode) + wsize)^ := -addr;
          // replace vmt
          vi^ := pcode;
        end;
      end;
    end;
  end;
end;

 

Кто разобрался, что код делает – тому печенька =) Потом напишу, как это понял я. В любом случае не стоит говорить, что Delphi для дебилов. Delphi — уникальный язык в плане уровня вхождения и возможного уровня освоения. Лично мне очень жаль, что ему почти все.