субота, 30 красавіка 2011 г.

Пачынаем працу з ebay!

Прывiтанне!
Значыцца, пачатак працы з ebay складаецца з наспупных этапаў:

  1. Неабходна атрымаць картку, якая а) працуе ў iнтэрнэце, б) працуе з paypal
  2. Рэгiстрацыя ў Paypal
  3. Рэгiстрацыя ў ebay
  4. Пошук лота
  5. ???
  6. Profit!
Далей, па пунктах:

1. Неабходна атрымаць картку, якая а) працуе ў iнтэрнэце, б) працуе з paypal
З гэтым зараз цяжка. Што магу сказаць з асабiстага досведу? У нас працуе пакуль Visa Virtuon ад БПС-банка. Што з астатнiмi - малавядома. Праз тое, што ў палцы мы на птушыных правах - бывае ўсякае. Аператыўна сачыць за сiтуацыяй можна тут - http://forum.onliner.by/viewtopic.php?t=310431&postdays=0&postorder=asc&start=4880

2.
Там жа распiсана працэдура як зарэгiстравацца ў paypal.

3.
Рэгiстрацыя ў ebay. Тут усё проста - рэгiструемся, указваем Беларусь як краiну пражывання i нiякiх праблем.

4. Пошук лоту. А вось гэта самы цынус iбэю J Тут пакуль сам не пакапаешся добра - не навучышся. Але пару парад ёсць:
  1. сайты ebay
    1. ebay.com тут тавары ў асноўным з ЗША i бывае што з Кiтаю. Што браць: электронiка/iншыя няшныя штукi, але невялiкага памеру, бо дастаўка дарагаватая часам.
    2. ebay.co.uk тут тавары з Велiкабрытанii. Што браць: адзенне! Дастаўка звычайна танней, чым з ЗША, таксама, электронiка i ўсё такое.
    3. ebay.de, ebay.pl - гэта, калi ведаеце нямецкую/польскую. Я звычайна iмi не карыстаюся (рабiў раз замову з нямецкага - не айс, сядзi як дурань з translate.google.com перакладай - мне ўжо прасцей адразу на англамоўных версiях пашукаць). Палякi неяк слаба сюды дасылаюць, але гэта трэба глядзець.
    4. global.ebay.com - глабальный сайт iбэю, шукае адразу па ўсiх сайтах. Мiнус - фiльтры пошуку слабыя.
  2. Падчас пошуку можна выбраць фiльтр, каб паказваць толькi тавары з дастаўкай у Беларусь. Для гэтата трэба адстартаваць латы па Price + P&P: lowest first
  3. Асноўнае правiла пошуку: чытаць УСЁ па метаду паўночна-заходняга кута: чытаць апiсанне лотаў з верхняга левага кута ў нiжнi правы. Без выключэнняў. Бо сiтуацыi бываюць розныя, напрыклад:
    1. Дасылаюць толькi на адрас paypal: значыць, будзе iсцi праз расiю i не факт, што дойдзе -> такiя латы фтопку
    2. На малюнку бачым прыгожы новы тэлефона, а ў апiсаннi будзе напiснана дробным шрыфтам "бу 5 год" - значыць, прыйдзе тэлефон бу 5 год i наўрад цi можна будзе адкрыць claim - скаргу на прадаўца, бо апiсанне правiльнае.
    3. На малюнку бачым прыгожую каробку тэлефона, а ў апiсаннi будзе напiснана дробным шрыфтам "прадаецца каробка ад тэлефона без тэлефона" - значыць, прыйдзе толькi каробка i наўрад цi можна будзе адкрыць claim - скаргу на прадаўца, бо апiсанне правiльнае. На свае вочы бачыў цiпа-iPad за $400 - у апiсаннi напiсана, што за гэтыя грошы вам прыйдзе лiст з вялiкай падзякай - гэта, ужо, канешне, fraud (падман) у чыстым выглядзе, але нафiга гэтыя праблемы?
  4. Часам пасылкi не даходзяць - цi па вiне пошты, цi таму, што прадавец пiдарас. Першае, што вас здзiвiць - калi раней не сутыкалiся - добрасумленныя прадаўцы стараюцца дапамагчы ўсiмi магчымымi сродкамi. Напрыклад, была сiтуацыя - батарэя ад ноўта не прыйшла праз 60 дзён - тэрмiн падачы claim сцёк, лiчы - прапалi грошыкi, але напiсалi прадаўцу, той выслаў tracking number (нумар, па якiм можна адсачыць пасылку) i паабяцаў зрабiць refund (вяртанне грошай), калi пасылка не знойдзецца. Хаця пра правiлах iбэй ён мог мяне паслаць на йух i я ў гэтым выпадку нiчога бы не зрабiў. Пасылка, дарэчы, у той час ужо два тыднi валялася ў паштовым аддзяленнi - так што нашая пошта ячшэ тыя слоўпокi. Добра, што не крадуць хоць, прынамсi, у нас не было такiх выпадкаў. Другi прыклад: у iншага прадаўца замовiў акуляры - праз 43 днi правяраю - як яны там. Опа! Прадавец ужо выпiлены з iбэю, хутчэй за ўсё, за fraud. Адкрыў скаргу, апiсаў, як усё ёсць - iбэй вярнуў грошы. Ну i калi выпала так, што прадавец сумленны, вярнуў грошы, а пасылка раптам прышла, то прынята паведамляць прадаўцу пра гэта i якiм-небудзь чынам пераводзiць гэтыя грошы. Калi ласка, не псуйце iмiдж краiны, ён i так нiжэй за плiнтус J
  5. Не саромеемся пытаць у прадаўца, калi што незразумела па лоту ДА ТАГО, ЯК ЯГО НАБЫЛI. Бо калi напiсана genuine - значыць, так яно i ёсць. А калi не - то можна быць i падробка пад кiтай J
  6. Тыпы аўкцыёнаў:
    1. Buy it now - самы просты: звычайная пакупка без нiякiх ставак i ўсяго такога.
    2. Auction - аўкцыён - робiм стаўку, чакаем пакуль скончыцца. Калi цiкава - пачытайце пра ebay snipers - не зусiм чЭсна, але nobody cares.
    3. Best offer - робiм прапановы, прадавец выбiрае тую, якая яму спадабался.
  7. Спосаб дастаўкi: галоўнае правiла - забудзьце пра кур'ерскiя службы (UPS (не USPS), DHL, FedEx) як пра старшны сон - бо гэта па-першае лiмiт 10€, па-другое - за пасылкай ехаць у Мiнск-2. Месца страншае. Я адзiн раз прайшоў гэты квест - нiкому не раю. Паўдня кату пад хвост. Таму нашы выбар - звычайная пошта альбо EMS

З большага, усе. Лiрычнае адступленне: як бачыце, целарухаў для пачатку зрабiць трэба шмат, але калi спадабаецца, то гэта як новы мiр. Што я там толькi не набываў па коштах нiжэй за нашыя, а то i ўвогуле ўнiкальныя рэчы! Вастрыльны водны камень з Японii, кабуру Fobus з Iзраiлю, eReader з ЗША i шмат чаго. Яно таго каштуе. Але для разавай пакупкi магчыма, ёсць сэнс пашукаць пасярэднiка. Як яно там дакладна, не ведаю, але думаю, схема кшталту такой: 10% за паслугi i нiякiх гарантый, што тавар дойдзе. Прынамсi, для сваiх я так раблю (толькi без 10%). Ebay гэта трошкi латэрэя, але шчыра прызнацца - выйграць шанец знаааааачна вышэй, чым у СпортЛато (цi як гэтая фiгня завецца?) У маiм выпадку - 100% выгрыш. Адна пасылка была fraud - i то, грошы вярнулi.

аўторак, 22 верасня 2009 г.

чацвер, 5 сакавіка 2009 г.

If anybody look for fix for http://bugs.sun.com/view_bug.do?bug_id=4947220
(process) Runtime.exec() cannot invoke applications with unicode parameters (win)
You can try mi fixes:
it`s a wrapper around CreateProcessW with a little bit of process control.


// must match constants at Win32Process class
#define SUCCESS 0
#define CREATE_ERROR 0
#define WAIT_ERROR 1
#define TERMINATE_ERROR 2
#define GET_EXIT_CODE_ERROR 3
#define EXIT_VALUE 4
#define ARRAY_SIZE 5
#define INVALID_VALUE -31

#include
#include "utils_os_windows_SystemUtils.h"
/*
* Class: utils_os_windows_SystemUtils
* Method: createProcess
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jintArray JNICALL Java_utils_os_windows_SystemUtils_createProcessAndWaitInternal
(JNIEnv * env, jobject obj, jstring processCommandLine, jlong millis, jboolean needTerminate) {
    // hold all info about proces state
    jint returnCodesArray[ARRAY_SIZE] = {INVALID_VALUE, INVALID_VALUE, INVALID_VALUE, INVALID_VALUE, INVALID_VALUE};
    jboolean isCopy;
    const jchar *pCommandLine = env->GetStringChars(processCommandLine, &isCopy);

    // make a copy of pCommandLine - CreateProcessW modified it...
    size_t commandLineLength = wcslen((wchar_t *)pCommandLine) + 1;
    wchar_t * muttableCommandLine = new wchar_t[commandLineLength];
    wcscpy_s(muttableCommandLine, commandLineLength, (wchar_t*)pCommandLine);

    // free unused chars
    env->ReleaseStringChars(processCommandLine, pCommandLine);
    // addionalional structures for CreateProcessW
    STARTUPINFOW startupInfo;
    PROCESS_INFORMATION processInfo;
    // fill memory with 0
    ZeroMemory( &startupInfo, sizeof(startupInfo) );
    startupInfo.cb = sizeof(startupInfo);
    ZeroMemory( &processInfo, sizeof(processInfo) );

    // Start the child process.
    if (CreateProcessW( NULL, // No module name (use command line)
                muttableCommandLine, // Command line
                NULL, // Process security attribues
                NULL, // Thread security attribues
                FALSE, // Set handle inheritance to FALSE
                CREATE_NO_WINDOW, // if console program - without console window, else if non-console prog - ignored
                NULL, // Use parent's environment block
                NULL, // Use parent's starting directory
                &startupInfo, // Pointer to STARTUPINFO structure
                &processInfo ) // Pointer to PROCESS_INFORMATION structure
            ) {
        // if successfull
        returnCodesArray[CREATE_ERROR] = SUCCESS;
        // start wait for time
        if (millis > 0) {
            returnCodesArray[WAIT_ERROR] = SUCCESS;
            DWORD waitRetCode = WaitForSingleObject(processInfo.hProcess, (long)millis);
            if ( waitRetCode == WAIT_FAILED) {
                // we have an error
                returnCodesArray[WAIT_ERROR] = GetLastError();
            } else if ( needTerminate ) {

                // do it atomic
                CRITICAL_SECTION criticalSection;
                InitializeCriticalSection(&criticalSection);
                EnterCriticalSection(&criticalSection);
                // first check, if process still alive
                DWORD exitCode;
                if (GetExitCodeProcess(processInfo.hProcess, &exitCode)) {
                    if (exitCode == STILL_ACTIVE) {
                        // if true - terminate it
                        // kill process
                        returnCodesArray[TERMINATE_ERROR] = SUCCESS;
                        if (!TerminateProcess(processInfo.hProcess, 1)) { // 1 - because of origin sources has this value
                            returnCodesArray[TERMINATE_ERROR] = GetLastError();
                            returnCodesArray[EXIT_VALUE] = 1; // value from TerminateProcess
                        }
                    } else {
                        returnCodesArray[EXIT_VALUE] = exitCode;
                    }
                } else {
                    returnCodesArray[GET_EXIT_CODE_ERROR] = GetLastError();
                }
                // leave criticaval section
                LeaveCriticalSection(&criticalSection);
                DeleteCriticalSection(&criticalSection);
            }
        }
        CloseHandle(processInfo.hProcess);
        CloseHandle(processInfo.hThread);
    } else {
        // if unsuccessfull
        returnCodesArray[CREATE_ERROR] = GetLastError();
    }
    // clear up...
    delete[] muttableCommandLine;
    muttableCommandLine = 0;
    // obtain new java int array
    jintArray returnArray = env->NewIntArray(ARRAY_SIZE);
    env->SetIntArrayRegion(returnArray, 0, ARRAY_SIZE, returnCodesArray);
    return returnArray;

}

серада, 18 лютага 2009 г.

Java, Struts, Hibernate and so on...

Усім добрага вечара!

Кароткія звесткі аб тым, што вам магчыма патрабуецца ў напісанні праектаў у Вейніка.

Па-першае, гэта Struts ("стратс" (падпоркі))
-- Генерал: фрэймворк для напісання вебаплікух. Калі хочаце, можаце лічыць гэта нейчым накштал asp.net, але, на мой погляд, Struts значна больш
гібкі і зручны для гэтай справы.
-- Што сабой уяўляе: набор бібліятэк (тыя, што *.jar). Раю юзаць Struts 2 ( але можна і Struts 1).
-- Дзе што шукаць:
сайт праекту http://struts.apache.org/ , http://struts.ru - там нават нешта па-расейску ёсць.
кнігі, якія ёсць у мяне:
Struts in action 2003, Manning - нічо так, але пра Struts 1
Apress - Beginning Apache Struts - From Novice to Professional - што за яна, ужо ня памятаю :(
Apress - Practical Apache Struts2 Web 2.0 Projects - па назве - мабыць пра Struts 2
O_Reilly_-_Jakarta_Struts_
Cookbook_-_2005_-_Bill_Siggelkow - хаця і 2005, але яшчэ Struts 1.х
O'Reilly - Programming Jakarta Struts - 2002 - таксама Struts 1.1
WILEY_Mastering_Jakarta_Struts - вось тут менш літар ;)
Wiley - Jakarta Struts For Dummies - а тут ёсць малюнкі.

Як відно, па Struts 2 амаль нічога. Ёсць нядрэнны бук Struts 2 in action , Manning, але гэта праз Віталега, бо з маёй сеткі
гэтая бібліятэка не даступна.

Па-другое, Tiles
-- Генерал: плюшка для Стратс, каб працаваць з шаблонамі (зноў жа, нешта накшталт masterpages, але больш гібкае і моцнае)
-- Што сабой уяўляе: здэцца, адна бібліятэка, ды мо якіх пару таглібаў
-- Дзе што шукаць
сайт праекту: http://tiles.apache.org/
кнігі, якія ёсць у мяне:
tilesAdvancedFeatures
таксама апісваецца амаль ва усіх кнігах са Struts

Па-трэцяе, Hibernate
-- Генерал: фрэймворк для працы з базамі дадзеных. Яшчэ такія фрэймворкі клікаюць ORM здэцца - нешта накшталт LNQ у рашотцы. Але LNQ у параўнанні
з Hibernate - кітайская грамата, ды яшчэ у кнізе на японскім ;)
-- Што сабой уяўляе: набор бібліятэк. Раю юзаць трэцюю версію - сьвежачок зпампаваў на днях - можаце брать.
-- Дзе што шукаць:
сайт праекту http://www.hibernate.org/
кнігі, якія ёсць у мяне:
Hibernate in action, Manning - нядрэнны бук

Па-чацвёртае, Spring
-- Генерал: ммм... нават ня ведаю, як яго назваць... Нешта накшталт кантэйнеру аплікацыі. Але тут лепш паспрабаваць, чым размаўляць.
Можа выкарыстоўвацца ня толькі для вебу, але і для дэсктопу ці яшчэ чаго. Аналагу з шарпу нават не магу прыдумаць. Spring дазваляе легка
сабраць у адну кучу Struts, Hibernate і іншае. Рэч здораўская, але і трохі мутнаватая. Ня раю яе тым, хто піша просценькую вебаплікуху, але
тым, хто мае трохі часу - раю - разбярэціся адзін раз - зможаце потым лёгка яе юзаць.
-- Што сабой уяўляе: тое ж самае :)
-- Дзе што шукаць
сайт праекту http://www.springsource.org/
кнігі, якія ёсць у мяне
Spring in action, Manning
Spring Live - добра апісана, як юзаць Spring+Hibernate+Srtuts


Па-пятае, JUnit (special for you, Sveta & Ira :) )
-- Генерал: фрэймворк для тэсту чаго заўгодна. Ня здзіўлюся, калі ім можна і com-порт з падрубленым "уцюгом" патэсціць. Лёгкі ў разуменні -
нам прыперла - за два дні разабраліся :)
-- Што сабой уяўляе: ага, набор *.jar. У модных IDE накштал NetBeans, Eclipse J2EE Suite, IDEA ёсць звычайна у камплекце.
-- Дзе шукаць:
сайт праекту http://www.junit.org/
добрая кніга Junit in action, Manning, на жаль, у мяне няма :(

У якасці плюшкі, калі патрэбуюцца мок-аб'екты - юзайте easymock - тут google вам у дапамогу.

Па-шостае, JavaFX
-- Калi ведаеце, што такое AdobeFlex or MS SilverLight, то гэта падобна на іх.
-- Дзе шукаць:
тут адпраўная кропка - java.sun.com, потым google.com http://javafx.com/
Здэцца, нешта было ў бібліятэцы па JavaFX, але тут ужо Віталега прасіце ;)

І апошняе: тут некаторыя (ня будзем паказваць пальцам на Парфеяўца) пыталі, ці ёсць Struts/Hibernate/String etc у Eclipse ці яшчэ ў якой IDE. Адкажу адразу так:
а ці ёсць у віндзе фільм "Перавозчык 3"? Адказ просты - калі запішаце - будзе, калі не - не будзе :) Eclipse у мінімальнай пастауцы займае добра калі 30 метраў, і канешне, там нічога няма,
ну а калі паставіть Eclipse WTP ды яшчэ панавей, то там ня толькі Struts/Hibernate/String... будзе, а і яшчэ шмат чаго. А калі ня будзе - усё проста - пампуем з сайту праекту бібліятэкі і юзаем.
Так нават лепш - больш зразумела, што ды куды.