Tanie odnowienie domeny

Adam Dudzik | Ogólnie | 24 grudnia 2009

Powoli zbliża się moment odnowienia mojej głównej domeny dudzik.org.pl. Domena pierwotnie zarejestrowana była w home.pl i tam też została już parę razy odnowiona. Nie uśmiecha mi się jednak po raz kolejny wydawać na ten cel kwoty 75 złotych netto. Suma ta okazała się być wystarczającą motywacją by znaleźć tańszego rejestratora. Takim okazał się być masternet.pl. Firma oferuje odnowienie domen funkcjonalnych w cenie 37 złotych netto a “peelek” już po 45 złotych. I to jest cena bez żadnych gwiazdek. Kod authinfo udostępniany bez żadnych ceregieli i dodatkowych opłat. Co ważne niska cena w żaden sposób nie odzwierciedla jakości usług. Kontakt z administratorem szybki i bezproblemowy, udzielane przez niego odpowiedzi konkretne i rzeczowe. Panel zarządzający autorski, całkiem fajnie rozwiązany - wszystkomający :).

Polecam.

Tex Murphy za darmo od GOG

Adam Dudzik | Ogólnie | 20 grudnia 2009

Z okazji świąt, portal Good Old Games przygotował małą niespodziankę. Są nią dwie pierwsze częsci gry Tex Murphy dostępne zupełnie za darmo. Jedynym wymogiem jest zarejestrowanie się w serwisie i pobranie gry do 24 grudnia. Może warto przypomnieć sobie stare przygodówki?

Chyba warto wspomnieć też że serwis Good Old Games posiada w swoich zbiorach polską grę przygodową Teenagent - również do pobrania za darmo

Blokada ContextMenu na komponencie WebBrowser

Adam Dudzik | .NET Compact Framework, Informatyka, Urządzenia mobilne | 19 grudnia 2009

Jeśli używacie kontrolki WebBrowser z Compact Frameworka 2.0 zapewne spotkaliście się z ContextMenu pojawiającym sie za każdym razem gdy przytrzymacie zbyt długo rysik (zdarzenie Tap&Hold). Moim zdaniem jest to dość uciążliwe, w pewnych przypadkach pojawiające się ContextMenu jest wysoce niepożądane. Jako że potrzeba matką wynalazków postanowiłem sam zmierzyć sie z tematem i potyczka ta została zakończona sukcesem :)

 

Całość zagadnienia sprowadziła się do wpięcia w procedurę obsługi okna. Na początek gotowy kod.

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Dudzik.Helpers
{
    public class WebBrowserExt : System.Windows.Forms.WebBrowser
    {
        private IntPtr child;
        private static WndProcDelegate newWndProc;
        private static IntPtr oldWndProc = IntPtr.Zero, oldSipProc = IntPtr.Zero;

        internal const int GWL_WNDPROC = -4;
        internal const int WM_LBUTTONUP = 0x0202;

        [DllImport("coredll")]
        extern static IntPtr GetCapture();

        [DllImport("coredll.dll", EntryPoint = "GetWindow")]
        private static extern IntPtr GetWindow(IntPtr handleWindow, int cmd);

        [DllImport("coredll.dll", EntryPoint = "GetWindowLong")]
        private static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);

        [DllImport("coredll.dll")]
        private static extern int SetWindowLong(IntPtr hWnd, int nIndex, IntPtr newWndProc);

        [DllImport("coredll.dll")]
        private static extern int PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

        [DllImport("coredll.dll")]
        private static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

        delegate IntPtr WndProcDelegate(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);

        protected override void OnHandleCreated(EventArgs e)
        {
            IntPtr webHandle = GetHWND(this);
            child = GetWindow(webHandle, 5);
            child = GetWindow(child, 5);
            child = GetWindow(child, 2);

            newWndProc = new WndProcDelegate(WndProc);
            oldWndProc = GetWindowLong(child, GWL_WNDPROC);
            int success = SetWindowLong(child, GWL_WNDPROC, Marshal.GetFunctionPointerForDelegate(newWndProc));

            base.OnHandleCreated(e);
        }

        private IntPtr WndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
        {
            if (msg == 0x0020)
            {
                PostMessage(this.Handle, WM_LBUTTONUP, 0, 0);
                return IntPtr.Zero;
            }

            return CallWindowProc(oldWndProc, child, msg, wParam, lParam);
        }

        private IntPtr GetHWND(Control ctl)
        {
            ctl.Capture = true;
            IntPtr hWnd = GetCapture();
            ctl.Capture = false;
            return hWnd;
        }
    }
}

Proponuje również utworzyć odpowiedni plik xmta. Pozwoli on na bezproblemowe użycie kontrolki w Design Mode. Poniżej najprostsza zawartość pliku xmta.

<?xml version="1.0" encoding="utf-16"?>
<Classes xmlns="http://schemas.microsoft.com/VisualStudio/2004/03/SmartDevices/XMTA.xsd">
  <Class Name="Dudzik.Helpers.WebBrowserExt">
    <DesktopCompatible>true</DesktopCompatible>
    <Property Name="Size">
      <DefaultValue>
        <Type>
          System.Drawing.Size, System.Drawing, Version=2.0.0.0,
          Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
        </Type>
        <Value>
          240; 100
        </Value>
      </DefaultValue>
    </Property>
  </Class>
</Classes>

Uruchomienie WebMethod z komputera innego niż lokalny.

Adam Dudzik | .NET Framework, Informatyka | 19 grudnia 2009

Formularz testowy jest dostępny tylko dla żądań z komputera lokalnego.” - taka informacja wita nas w sytuacji gdy chcemy uruchomić metodę usługi Web z komputera innego niż tego na którym usługa jest udostępniona. Pomijając fakt że ograniczenie takie ma jakiś sens - bezpieczeństwo i inne takie, to w sytuacji gdy wiemy czego chcemy i wiemy co robimy możemy to udogodnienie włączyć następującym wpisem:

<webServices>
  <protocols>
    <add name="HttpPost" />
    <add name="HttpGet" />
  </protocols>
</webServices>

umieszczonym w pliku config.web w sekcji system.web

Oracle Sql Developer a nie działający Backspace

Adam Dudzik | Informatyka, SQL | 17 grudnia 2009

Tak sie ostatnio złożyło ze musialem sie zająć bazą danych Oracle. Jednym z narzędzi edycyjnych jest Oracle SQL Developer - pomimo pewnych upierdliwości :) całkiem wygodny. I tak nam sie fajnie pracowało do czasu gdy pewnego dnia klawisz Backspace odmówił współpracy w oknach edycyjnych.Rozwiązaniem okazało się wykonanie następujących czynności:

Tools->Preferences->pozycja Accelerators->klawisz Load Preset

i wybieramy pozycję Default

:)

Polski Wordpress
Oparte na WordPress | Theme by Roy Tanck. Tłumaczenia dokonał azWeb dla Polski support WordPress