Kamil Szot

PHP, JavaScript - rozwiązywanie problemów. limeline.pl

Wypowiedzi

  • Kamil Szot
    Wpis na grupie PHP w temacie Wyszukiwanie pełnotekstowe w Mysql i PHP
    13.01.2012, 09:42

    Marcin W.:
    http://www.getopt.org/stempel/#distrib

    Stempel jest w javie dlatego stosunkowo łatwo można go podpiąć do SOLR-a i radzi sobie tam bardzo dobrze.

    Nie orientuję się jak wygląda to w SPHINXie. Czy tam można podłączyć javovy stemmer? Teoretycznie jest źródełko więc można by nawet sportować to z Javy do C++ jeżeli byłoby to potrzebne ale to już trochę więcej roboty.

  • Kamil Szot
    Wpis na grupie PHP w temacie Ktoś może zna system kontroli wersji dla którego istnieje...
    2.06.2010, 14:58

    Kamil Szot:
    Adam Brodziak:
    Może Bazaar? Obsługuje export przez FTP (aczkolwiek nie wiem, czy leci całe repo, czy można zrobić aktualizację różnicową). Jest napisany w Pythonie, więc może uda się odpalić na shared hosting jeśli dają interpreter.

    Plugin do bazara (zdaje się bazar-upload) elegancko wrzuca tylko zmiany na serwer. Niestety zakrztusił mi się na plikach z polskimi znakami w nazwie w utfie. Pokopałem chwilę w źródłach ale znalazłem jakieś smoki w okolicy bibliotek odpowiadających za komunikację ftp i sobie odpuściłem.

    Gdyby kogoś to interesowało to zgłosiłem problem developerom bazaara i rozgryźli sprawę. Można już używać bazaara (od 2.1.0rc1) przez ftp (np. pluginem bazaar-upload) dla repozytoriów zawierających pliki z polskimi znakami w nazwach. Trzeba tylko uważać bo po stronie FTP mogą one zostać zakodowane przy pomocy innego kodowania niż na systemie z którego je uploadujemy.

  • Kamil Szot
    Wpis na grupie Doctrine w temacie Doctrine w istniejącej aplikacji
    1.03.2010, 07:51

    Doctrine_Core::generateModelsFromDb('models', array(), array('generateTableClasses' => true));

    Doctrine_Core::generateYamlFromModels('schema.yml', 'models');

    Potem sobie podrasować schema.yml a na koniec:
    Doctrine_Core::generateModelsFromYaml('schema.yml', 'models');

    i już tylko używać:
    Doctrine_Core::loadModels('models');

  • Kamil Szot
    Wpis na grupie PHP w temacie Jaki znacie framework PHP najbardziej podobny do Apache...
    4.12.2009, 16:25

    Chodzi mi konkretnie o podejście komponentowe ale nie zdarzeniowe (czyli np. Prado odpada) i o przekazywanie parametrów komponentom w kontrolerze a definiowanie ich rozmieszczenia (i ewentualnie niektórych parametrów związanych z ich wyświetlaniem) w szablonie.

  • Kamil Szot
    Wpis na grupie web2py w temacie Ktoś z was może coś zbudował w oparciu o ten framework?
    4.12.2009, 13:18

    Jakieś odczucia?

    Na jakie problemy natrafiliście?

    Co jest zrobione gorzej niż gdzie indziej? Dlaczego?

  • Kamil Szot
    Wpis na grupie Freelance w temacie Słyszeliście o faktoringu? Może to sposób na radzenie...
    4.12.2009, 13:15

    Na grupie na temat faktoringu znalazłem wypowiedź sugerującą, że umowa faktoringowa zawiera dane kontrahentów, którym planujemy wystawiać faktury. Czyli dla freelancera to usługa w zasadzie bezużyteczna.

  • Kamil Szot
    Wpis na grupie Freelance w temacie Słyszeliście o faktoringu? Może to sposób na radzenie...
    27.11.2009, 21:04

    Sławomir Mrowiński:
    Dokładnie. Istotna jest ocena ryzyka przez bank. Najczęściej konieczne jest zabezpieczenie transakcji .. i w opisanym przypadku mozliwy pewnie byłby faktoring z regresem (czyli osiągany jest efekt płynnościowy a nie ograniczenie ryzyka). Faktoring bez regresu jest raczej nie możliwy w takich wypadkach (no chyba ze klientem jest duża koroporacja, mająca wysoki rating i konto w baku faktora)

    Tak, chodziło mi o faktoring z regresem.

  • Kamil Szot
    Wpis na grupie Freelance w temacie Słyszeliście o faktoringu? Może to sposób na radzenie...
    27.11.2009, 20:56

    Jakub Mendys:
    Głównym celem faktoringu jest poprawa przepływów finansowych (cashflow), a nie jak można by sądzić poprawa ściągalności wierzytelności.

    Rozumiem, ale efekt poprawy ściągalności należności również powinien się pojawić już choćby z tego powodu, że klient ma zapłacić bankowi a nie małej firemce.
    Bank nie odkupi od Ciebie wierzytelności jeśli nie będzie miał gwarancji*, że zostanie ona wykupiona.

    *) gwarancją jest zazwyczaj albo Twoja linia kredytowa w banku (jak wierzyciel nie zapłaci bank obciąży Twoją linię), albo linia kredytowa wierzyciela (bank zna wierzyciela i udziela mu kredytu).

    Z tego co widziałem jako formę zabezpieczenia banki stosują przy faktoringu również weksle in blanco i pełnomocnictwo do rachunku. Z tego co zrozumiałem bank korzysta z tego zabezpieczenia nie kiedy wierzyciel nie zapłaci, ale kiedy okaże się niewypłacalny (firma bankrut lub osoba fizyczna bez majątku nadającego się do zajęcia). (choć tu http://www.dfsg.pl/index.php?d=dlafirm&p=faktoring piszą co innego)Kamil Szot edytował(a) ten post dnia 27.11.09 o godzinie 21:02

  • Kamil Szot
    Wpis na grupie Freelance w temacie Słyszeliście o faktoringu? Może to sposób na radzenie...
    27.11.2009, 08:54

    Jaroslaw Walczuk:
    Kamilu,
    faktoring jest stosowany zazwyczaj przy bardzo dużych transakcjach

    Czy jest to tylko zwyczaj czy reguła? Czy bank nie zajmie się faktoringiem dla firmy, która ma najwyżej kilka tysięcy miesięcznie przychodu bo nie będzie mu się chciało?
    i kosztuje % od wartości sumy transakcji.

    To akurat mnie nie odstrasza. Podatki kosztują procent od sumy transakcji. Ubezpieczenia kosztują pewien procent sumy ubezpieczenia. Jestem przyzwyczajony do płacenia w ten sposób.
    Szczerze mowiąc nie bedzie Ci sie to opłacało.

    Jeżeli tylko byłby to rozsądny procent, tzn. kilka a nie kilkadziesiąt procent to mogłoby się to opłacać biorąc pod uwagę jak demotywująco działa możliwość, że wykonywana praca nie zostanie opłacona.
    Aby obniżyć ryzyko zastosuj następująca konstrukcję:

    zadatek 20 % sumy - rozliczany z ostanią płatnością

    -analiza projektowanie
    ( w tym projekt graficzny) 30 %
    -wykonanie i testy - 50 %
    - wdrożenie 20 %

    całość prac rozbite na mniejsze etapy
    i zaczynasz następny etap jak jest zapłacone za poprzedni
    dzięki temu w przypadku nieuczciwaego klienta
    zaryzykujesz tylko połowę :) sumy

    Tak, to standardowe podejście do problemu. Nie jest ani specjalnie wygodne w praktyce, ani bardzo skuteczne, ale faktycznie nieco pomaga. Innym pomysłem tego typu jest inkasowanie pieniędzy za każdy etap prac z góry.
    polecam Ci takie podejsci a nie zabawy w faktoringi i etc.

    Atrakcyjność faktoringu prowadzonego przez bank polega dla mnie przede wszystkim na wspaniałych narzędziach do dochodzenia swoich wierzytelności jakie mają do dyspozycji banki.

    Nieuczciwy klient z łatwością może zrezygnować z zapłacenia freelancerowi, bo wie, że najprawdopodobniej nie będzie mu się chciało dowodzić tego, że klient jest mu coś winien przed sądem, poza tym w tego typu sprawach nieuczciwy klient może mieć już doświadczenie. Za to na pewno mocno się zastanowi zanim zdecyduje się nie zapłacić bankowi bo ten nie musi iść do sądu, żeby skutecznie dochodzić tego co mu się należy.

    Idealne dla mnie byłoby zawierać z klientem umowy ustne tak elastyczne jak potrzeba, a kiedy klient po wszystkim zgodzi się na wystawienie faktury, fakturę po prostu wystawić, wysłać do banku, otrzymać pieniądze i nie zajmować się całą sprawą, a w rzadkim przypadku kiedy okazuje się, że pracowałem dla kompletnie niewypłacalnej firmy oddać bankowi pieniądze.

  • Kamil Szot
    Wpis na grupie Freelance w temacie Słyszeliście o faktoringu? Może to sposób na radzenie...
    26.11.2009, 17:53

    Marcin N.:
    W czym moge pomóc?! :)

    j.w.

    Najważniejsze pytanie to:

    Czy banki zawierają umowy faktoringu z jednoosobowymi działalnościami gospodarczymi?

    Jeżeli odpowiedź na nie jest przecząca to w zasadzie pozostałe pytania nie mają znaczenia.

  • Kamil Szot
    Wpis na grupie Freelance w temacie Słyszeliście o faktoringu? Może to sposób na radzenie...
    26.11.2009, 16:57

    Hmmm... W materiale do którego linka podałaś jest mowa o utworzeniu specjalnego konta księgowego na rozliczenia z faktorem. Ciekawe czy można w ogóle korzystać z faktoringu prowadząc księgowość uproszczoną...

  • Kamil Szot
    Wpis na grupie Freelance w temacie Słyszeliście o faktoringu? Może to sposób na radzenie...
    26.11.2009, 16:33

    Niepłacący klienci. Chyba każdy freelancer takiego kiedyś spotkał w swej karierze.

    Niedawno dowiedziałem się, że banki świadczą usługę o nazwie faktoring. Z tego co zrozumiałem działa to tak:

    1. Podpisujemy z bankiem umowę.
    2. Kiedy po wykonaniu zlecenia wystawiamy klientowi fakturę wysyłamy ją do banku a nie do niego.
    3. Bank wypłaca nam ponad 95% wartości faktury od razu.
    4. Bank informuje naszego klienta, że ten ma mu zapłacić.
    5. Kiedy mija termin płatności faktury a klient nie chce płacić bank wystawia bankowy tytuł egzekucyjny i ściąga z klienta należność wszelkimi metodami dostępnymi instytucji bankowej.
    6. Jeżeli mimo wszystko okaże się, że klient jest niewypłacalny (komornik stwierdzi, że nie ma czego zająć na poczet należności) musimy zwrócić bankowi pieniądze.

    Jeżeli ktoś się orientuje w temacie to proszę mnie poprawić tam gdzie opacznie coś zrozumiałem. Czy banki zawierają umowy faktoringu z jednoosobowymi działalnościami gospodarczymi? Czy wystarczy dostarczyć im fakturę wystawioną klientowi (czy musi być podpisana przez klienta?) czy potrzebna jest też pisemna umowa jaką się z nim zawarło?

    Ktoś może tego próbował? Jak to wygląda w praktyce?

  • Kamil Szot
    Wpis na grupie PHP w temacie Ktoś może zna system kontroli wersji dla którego istnieje...
    28.10.2009, 14:46

    Aleksander Wons:
    W Tortois'e wygląda to tak:
    1. Show log
    2. Zaznaczasz dwie wybrane rewizje
    3. Prawym wybierasz "Compare revisions"
    4. Zaznaczasz wszystkie pliki i prawym wybierasz "Export".

    Teraz pozostaje wrzucenie na serwer.

    Jak na manualne rozwiązanie to brzmi całkiem wygodnie.
    Co do zrywania połączenia, to każda metoda jest na to podatna.

    Moja miała ten problem, że w przypadku przerwania wysyłania mój wynalazek przestawał działać i trzeba było zrobić lftp mirror
    Najmniej problemów jest z przesłaniem wszystkiego jako np. zip'a na serwer a tam już można skryptem zipa rozpakować.

    Tu problem jest taki, że pliki serwisu musiały by być zapisywalne przez apache-a a to obniża bezpieczeństwo.

    Adam Brodziak:
    Może Bazaar? Obsługuje export przez FTP (aczkolwiek nie wiem, czy leci całe repo, czy można zrobić aktualizację różnicową). Jest napisany w Pythonie, więc może uda się odpalić na shared hosting jeśli dają interpreter.

    Plugin do bazara (zdaje się bazar-upload) elegancko wrzuca tylko zmiany na serwer. Niestety zakrztusił mi się na plikach z polskimi znakami w nazwie w utfie. Pokopałem chwilę w źródłach ale znalazłem jakieś smoki w okolicy bibliotek odpowiadających za komunikację ftp i sobie odpuściłem.

  • Kamil Szot
    Wpis na grupie PHP w temacie Ktoś może zna system kontroli wersji dla którego istnieje...
    27.10.2009, 19:23

    Poprzednio miałem taki właśnie pomysł, żeby wyciągać z svn-a ostatnio zmienione pliki http://wiki.scotty.avx.pl/UzywanieSVNDoWysy%B3aniaZmia... ale choć działało to było bardziej zamotane. I nie odporne na przerwanie w trakcie transferu.

  • Kamil Szot
    Wpis na grupie PHP w temacie Ktoś może zna system kontroli wersji dla którego istnieje...
    27.10.2009, 13:45

    Stanisław Pitucha:
    Kamil Szot:
    Dlaczego? FTP nie ma możliwości zmiany tylko części pliku więc cały wspaniały rsyncowy algorytm wyszukiwania i wysyłania tylko różnic nie ma jak się wykazać.

    Z odpowiednimi opcjami nie będzie dotykał plików o takiej samej nazwie + rozmiarze + czasie zmiany. A te dane można dostać z ls'a.

    Analogicznie zachowuje się lftp (polecenie mirror). Wy-ls-owanie wszystkiego przez FTP jest bardzo powolne.

  • Kamil Szot
    Wpis na grupie PHP w temacie Ktoś może zna system kontroli wersji dla którego istnieje...
    27.10.2009, 13:29

    Wojciech Sznapka:
    montowaniem ftpa i rsynciem będzie imho szybciej
    Dlaczego? FTP nie ma możliwości zmiany tylko części pliku więc cały wspaniały rsyncowy algorytm wyszukiwania i wysyłania tylko różnic nie ma jak się wykazać.

  • Kamil Szot
    Wpis na grupie PHP w temacie Ktoś może zna system kontroli wersji dla którego istnieje...
    27.10.2009, 12:58

    Przestałem marzyć o wykorzystaniu sytemu kontroli wersji do rozwiązania tego problemu i tak na szybko sobie wystrugałem coś takiego:


    #!/usr/bin/php
    <?php

    $user = '';
    $pass = '';
    $server = '';
    $serverFtp = '';
    $dir = ''; // must have trailing slash if not empty

    $secret = 'secretsfdsfajoijid3czxc423423'; // anyone can get list of all files on the server by calling /uploader.php?secret
    $exclude= '/Thumbs.db$/|devel/|/\\.(svn|bzr|git)/|(~|\\.bak|\\.orig)$';


    function getLocalFileNamesWithMd5s() {
    global $exclude;
    foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(".")) as $file) {
    if(!preg_match("`$exclude`", $file->getPathname())) {
    $files[$file->getPathname()] = md5(file_get_contents($file->getPathname()));
    }
    }
    return $files;
    }

    if(php_sapi_name() == "cli"){
    $localFiles = getLocalFileNamesWithMd5s();
    foreach(file("http://$server/uploader.php?".urlencode($secret), FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
    list($md5, $fileName) = explode(" ", $line);
    if($localFiles[$fileName] == $md5) {
    unset($localFiles[$fileName]);
    }
    }
    if($localFiles) {
    $myName = $_SERVER['SCRIPT_FILENAME'];
    $ftp = ftp_connect($serverFtp, 21, 10);
    if(!$ftp) die;
    ftp_login($ftp, $user, $pass);
    ftp_pasv($ftp, true);
    if($dir) ftp_chdir($ftp, $dir);

    ksort($localFiles);
    if(isset($localFiles[$myName])) {
    unset($localFiles[$myName]);
    $localFiles = array_keys($localFiles);
    array_unshift($localFiles, $myName);
    } else {
    $localFiles = array_keys($localFiles);
    }
    echo "Files to upload:\n".implode("\n", $localFiles)."\n\n";
    sleep(5);
    foreach($localFiles as $fileName) {
    echo "Sending $fileName ... ";
    $dirParts = explode('/', dirname(substr($fileName, 2)));
    for($i = 1; $i <= count($dirParts); $i++) {
    @ftp_mkdir($ftp, implode('/', array_slice($dirParts, 0, $i)));
    }
    ftp_put($ftp, $fileName, $fileName, FTP_BINARY);
    echo "ok\n";
    if($fileName == $myName) {
    ftp_close($ftp);
    die("Just updated self. Please run me again.\n");
    }
    }
    ftp_close($ftp);
    } else {
    echo "Nothing to send.\n";
    }
    } else {
    if($_SERVER['QUERY_STRING'] == $secret) {
    foreach(getLocalFileNamesWithMd5s() as $fileName => $md5) {
    echo "$md5 $fileName\n";
    }
    }
    }



    Skonfigurować, wrzucić do głównego katalogu z przetestowaną kopią roboczą, odpalić z konsoli.

    Łączy się z serwerem ftp i wysyła tam samego siebie. Przy ponownym odpaleniu wykonuje zdalną kopię siebie, która zwraca nazwy plików na serwerze wraz z ich md5. Wysyła FTP-em tylko te pliki lokalne, które mają różne md5 od pobranych.

    Możliwe zmiany:
    - dla bezpieczeństwa pobierać hasło ftp z $argv, albo wysyłać na serwer tylko część siebie, która jest konieczna (bez konfiguracji ftp).
    - dla szybkości, oprócz plików śledzić również katalogi tak, żeby można było założyć je zawczasu (a nie tak jak teraz, podczas uploadowania leżących w nich plików) + gzipować zwracaną z serwera listę nazw plików jeżeli sam serwer tego nie robi.Kamil Szot edytował(a) ten post dnia 27.10.09 o godzinie 13:00

  • Kamil Szot
    Wpis na grupie PHP w temacie Ktoś może zna system kontroli wersji dla którego istnieje...
    27.10.2009, 12:48

    Wojciech Sznapka:
    wracając do problemu, podmontuj se tego ftpa curlftpfs (http://onjin.net/blog/2009/06/21/fuse-ftp-mount-curlft... i synchronizuj rsync'iem, będzie to trwało cholernie długo,

    ano właśnie

  • Kamil Szot
    Wpis na grupie PHP w temacie Ktoś może zna system kontroli wersji dla którego istnieje...
    27.10.2009, 12:47

    Maciej Filipiak:
    Kamil - dlaczego nie wchodzi w grę opcja odpalenia 'svn update' z php ? odpalenie shella z exec() ?
    Serwer dostarczający współdzielonego hostingu może nie mieć zainstalowanego svn-a albo może mieć zablokowaną możliwość wykonywania niebezpiecznych funkcji (np. exec)
    I co masz do FTP ? na czym jego "głupiość" polga ?
    Na tym, że nie jest rsynciem. ;-)

  • Kamil Szot
    Wpis na grupie PHP w temacie Ktoś może zna system kontroli wersji dla którego istnieje...
    27.10.2009, 12:05

    Szymon Błachowicz:
    Nie lepiej korzystać z klientów np. SVN w środowisku w którym kodujesz? W eclipsie (dla PHP PDT) można zainstalować subclipse'a (http://subclipse.tigris.org/) czyli klienta SVN'a i działa bardzo ładnie (sam korzystam). Robienie commitów z przeglądarki to chyba dziwne podejście

    Commity mnie znacznie mniej interesują niż updaty.
    - pewno dlatego nie ma zbyt dużego wyboru jeżeli chodzi o klientów.

    Wydaje mi się, że implementacja jest po prostu trudna.
    Tradycyjne podejście - Każdy koduje swoje i commituje z IDE (lub z konsoli).

    Oczywiście, tylko, że kiedy wszystko jest już zakodowane i przetestowane trzeba zaktualizować kopię produkcyjną, która znajduje się np. na współdzielonym hostingu bez zainstalowanego svn-a albo z zablokowanym exec() dostępną jedynie przez FTP. FTP jest chyba najgłupszym powszechnie używanym protokołem o jakim słyszałem więc na inteligentne narzędzie operujące via FTP nie ma co liczyć. Pozostaje dostęp przez przeglądarkę. Klient systemu kontroli wersji w czystym php załatwiał by sprawę. Dlatego pytam.

Dołącz do GoldenLine

Oferty pracy

Sprawdź aktualne oferty pracy

Aplikuj w łatwy sposób

Aplikuj jednym kliknięciem

Wyślij zaproszenie do