strona główna

Archive for May, 2005

Licencje na oprogramowanie umierają?

Saturday, May 28th, 2005

Jeden z tych odsyłaczy, dla których warto przeglądać co jakiś czas nagłówki Slashdota: Is the enterprise software licensing business dying?.

W skrócie: coraz wyraźniejszy jest spadek ilości pieniędzy przeznaczanych na zakup licencji na oprogramowanie dla firm. Firmy bazujące na modelu sprzedaży produktów – licencji na oprogramowanie – zaczynają mieć problemy, bo są wypierane przez znacznie mniejsze przedsiębiorstwa działające według zasady "darmowe oprogramowanie + płatne konsultacje i dodawanie funkcjonalności na zamówienie".

I właściwie nie ma się czemu dziwić. Tworzenie oprogramowania jest coraz tańsze – maleją ceny sprzętu, narzędzi (takich jak kompilatory lub środowiska programistyczne), utrzymania biura (coraz więcej ludzi pracuje w domu), jak napisał niedawno Paul Graham – koszt założenia i utrzymania niewielkiej firmy programistycznej jest tak niski, że znika w szumie: nie jest już niezbędne biuro, komputery spowszechniały, a telefony komórkowe i natłok sposobów, na które można podłączyć się do Internetu sprawiają że pracować można właściwie gdziekolwiek.

Mniejsze koszty sprawiają, że do utrzymania się firmy wystarczają znacznie niższe przychody. Można więc pozwolić sobie na rozdawanie oprogramowania za darmo i zarabianie na usługach.

Jeszcze do niedawna duże firmy wygrywały marketingiem – wyraźny udział w kosztach tworzenia oprogramowania miała konieczność utrzymania sprzedawców, reklamy, szkoleń i imprez demonstracyjnych. To też się zmienia:

* darmowe wersje działają lepiej od najlepszych wersji demo – zapewniają rozgłos, referencje i dużą grupę ludzi (w wielu przypadkach – ewangelistów) polecających oprogramowanie znajomym, a z punktu widzenia klienta – niezwykle niski poziom ryzyka,
* blogi przekazują informacje znacznie szybciej i skuteczniej od prasy. Taka reklama jest też skuteczniejsza – wiadomości od znajomych są traktowane zupełnie inaczej niż hasło "jesteśmy najlepsi" zajmujące całą stronę w gazecie. Dlatego też Microsoft zdecydował się zatrudnić autorów blogów do propagowania Longhorna,
* firmy udostępniające przynajmniej podstawowe wersje oprogramowania lub serwisów za darmo są zupełnie inaczej postrzegane. Znacznie mniej zachodu kosztuje je utrzymanie pozytywnego wizerunku.

To są naprawdę fajne czasy. :)

Proxy c.d.

Saturday, May 28th, 2005

Podsumowanie walki z udostępnianiem Internetu przez serwer proxy.

  1. okazuje się, że i Internet Explorer i Firefox w najnowszej stabilnej wersji (1.0.4) wymagają dostępu do serwera DNS pomimo tego, że protokół Socks 5 przewiduje przeniesienie sprawdzania adresu na serwer proxy. W nowszym Firefoksie (w tej chwili tylko z CVS) podobno można to zmienić opcją network.proxy.socks_remote_dns, ale wolę sobie poradzić ze stabilną.

    Z tego powodu odpadł jednak Antinat, jako serwer proxy działa teraz DeleGate, który potrafi też przekazywać zapytania do DNS.

  2. adresy IP przypisane połączeniom kart d-linkowych w GUI Windows działają tylko do pierwszego restartu. Trzeba je skonfigurować w oprogramowaniu dołączonym do karty.
  3. TightVNC potrafi, w przypadku niezapowiedzianego zerwania połączenia (np. odpięcia kabelka), spowodować błyskawiczny restart komputera. A czasem i niebieski ekran. Sprawdzone (niechcący) trzykrotnie.

I na razie tyle, połączenie wydaje się działać. Zobaczymy jak długo. :)

Wspomniana wcześniej wprawka z elispa okazała się lekka, łatwa i przyjemna. A na dodatek rzeczywiście pomaga.

A przy okazji: 29 stopni w cieniu. W maju. Strach pomyśleć co będzie w lipcu.

Windows a socks proxy

Thursday, May 26th, 2005

Zawsze mi się wydawało, że serwer proxy to taka oczywista rzecz. Socks 5 to protokół prosty, zwłaszcza po ograniczeniu się do połączeń wychodzących. Nie chcę autoryzacji. Nie chcę logowania. Chcę tylko umożliwić komputerowi B łączenie się po TCP za pośrednictwem Neostrady podłączonej do komputera A.

Oczywiście wolałbym skorzystać z wbudowanego w Windows "udostępniania połączenia sieciowego", ale Neostrada jest tak uprzejma że tę możliwość wyłącza. Tak po prostu, po zainstalowaniu dołączonych do zestawu sterowników nie jestem w stanie otworzyć właściwości tego połączenia.

Jak miło.

Pozostają serwery proxy. Powszechnie chwalone WinRoute skreślam ze względu na cenę: $400 (lub $100 rocznie) to trochę zbyt dużo jak na to, czego potrzebuję. Bez przesady, ten serwer ma tylko nasłuchiwać na wskazanym porcie, otwierać połączenia ze wskazanym adresem i przepychać dane w obie strony. WinGate, drugi polecany program, to $75. Już lepiej, ale i tak wolałbym znaleźć coś darmowego.

Po krótkich testach:

  • ComTun Proxy Server nie jest darmowy, ale $25 jeszcze byłbym skłonny zapłacić. Niestety, nie dość, że nie potrafi sie uruchomić, to jeszcze psuje Neostradę – po zainstalowaniu serwera nie udało jej już włączyć. Na szczęście Uninstall pomógł.
  • VSOCKS Light byłby idealny gdyby nie to, że potrafi tylko Socks 4. Trochę zbyt mało, mam parę ważnych programów potrzebujących Socks 5 (np Skype)
  • DeleGate – pierwszy, który dał się zmusić do działania. Znalezienie opcji, która spowoduje jego uruchomienie w tle bez zadawania żadnych pytań wymagało chwili szukania w google, ale się udało:
    dg9_0_2.exe -Plocalhost:1080 SERVER=socks ADMIN=moj-adres SERVCONF=demand -r
    Po zapisaniu w pliku .bat i wrzuceniu do Autostartu powinien działać aż miło. Ale raczej zdecyduję się na...
  • Antinat – bingo. Czytelna konfiguracja w pliku, uruchamia się w tle bez wyświetlania czegokolwiek, po prostu działa.

Z zupełnie innej beczki – naprawdę ładny dzień. Po raz pierwszy w tym roku można było jeździć na rowerze w stroju "t-shirt i krótkie nogawki" i nie czuć chłodu. Oby tak dalej.

Szablony w emacsie

Wednesday, May 25th, 2005

Za dużo czasu spędzam na wpisywaniu tej samej informacji w kilku różnych miejscach podczas pisania w C++.

Przykład: dodanie nowej klasy, nazywającej się - powiedzmy - NowaKlasa, do projektu to:

1\. utworzenie pliku nowa_klasa.h według wzoru:


/**
 * \file nowa_klasa.h
 * \brief FILLME
 * \author Marcin Kaszynski
 * \date 2005-05-25
 */

#ifndef _NOWA_KLASA_H_
#define _NOWA_KLASA_H_
namespace ns_obowiazujacy_w_danej_czesci_projektu
{
    class NowaKlasa
    {
    public:
        NowaKlasa();
        virtual ~NowaKlasa();
    protected:
    };
}

#endif // _NOWA_KLASA_H_

2\. utworzenie pliku nowa_klasa.cpp według wzoru:


#ifdef _HAVE_CONFIG_H_
#include "config.h"
#endif // _HAVE_CONFIG_H_

#include "nowa_klasa.h"

namespace ns_obowiazujacy_w_danej_czesci_projektu
{
    /*** NowaKlasa ***/

    NowaKlasa::NowaKlasa()
    {}

    NowaKlasa::~NowaKlasa()
    {}
}

Oba te pliki mogą zostać w całości wygenerowane na podstawie tylko tych informacji:

* nazwy NowaKlasa,
* nazwy przestrzeni nazw (namespace),
* imienia i nazwiska autora.

Z czego tylko nazwa klasy zmienia się zawsze. Nazwa namespace i dane o autorze mogłyby być definiowane przez plik konfiguracyjny umieszczony w katalogu, w którym mają być utworzone nowe pliki (lub którymś katalogu nadrzędnym) oraz wpisy w konfiguracji emacsa.

Przyglądałem się istniejącym pakietom typu skeletontempo, ale żaden z nich nie jest na tyle inteligentny.

Zapowiada się fajna wprawka z Elispa :)

Początek

Wednesday, May 25th, 2005

Witam na moich stronach www. Nazywam się Marcin Kaszyński i prowadzę mikroskopijną firmę programistyczną, ElkSoft.

Będę tu zbierać moje notatki na Różne Tematy, związane głównie z prowadzeniem i rozwojem firmy oraz programowaniem. Przy odrobinie szczęścia przydadzą się też komuś innemu.