RicH and FamouS

       Home         Glosar IT                                                                                                                                                                                                              SUBSCRIBE NOW!
        
Se afișează postările cu eticheta Tips. Afișați toate postările
Se afișează postările cu eticheta Tips. Afișați toate postările

12.07.2009

Unix Tips & Tricks

1. Pentru a reveni la directorul precedent în ksh sau bash, utilizeaza:
Cod:
$ cd -
Pentru a utiliza ultimul argument de linie de comandă anterioara ca argument, utilizaţi $_. De exemplu:
Cod:
$ ls -l /usr/home/dmr/somefile
$ vi $_

2. Aveţi posibilitatea să omori orice un proces cu 'kill -9' ca root, nu-i asa? Nu neapărat. Este destul de uşor de a scrie un proces care nu pot fi oprite, chiar si cu 'kill -9'.

3. Pentru a determina ce program face dumping unui core fişier anonim, utilizeaza gdb:
Cod:
$ gdb -core core
[...]
Core was generated by `a.out'.
Program terminated with signal 6, Abort trap.
[...]
Dacă sunteţi pe un sistem fără gdb, încercaţi comanda de fişier:
Cod:
$ file core
core: ELF 32-bit LSB core file of 'a.out' (signal 6)
$


4. Doriţi să vă conectaţi în contul cuiva exact aşa cum au văzut-o ei atunci când au fac Log in. Atunci folosiţi-vă de "-" argument pentru su:
Cod:
$ su - user
În mod similar, atunci când doriţi să începeţi un nou shell care citeşte fişierele sale de configurare, ca si cum te-ai fi logat:
Cod:
$ ksh -
$ bash -
etc.

23.06.2009

Arhivaţi fişiere într-o simplă imagine (.jpg files)



Un Video educaţional despre faptul cum puteţi transforma un simplu file de tip .jpg într-o arhivă ascunsă. Vizionare plăcută!

22.06.2009

Mac OS X Tips & Tricks


1. Pentru a schimba un user's shell (cu Bash, de exemplu) pe OS X:
  • $ sudo niutil -createprop . /users/USER shell /bin/bash
2. Pune QuickTime în full screen mode:
  •  tell application "QuickTime Player"
    enter full screen display 1
    set the scale of movie 1 to screen
    play movie 1
    end tell
3. Captînd o regiune de ecran, puteţi să apăsaţi pe SpaceBar pentru a invoca în aparatul de fotografiat cursorul. După cum se mişca cursorul aparatului de fotografiat pe ecran, fereastra se va evidenţia. Click pentru a captura cea mai evidenţiată fereastra.
  • Command+Shift+3 => Captează ecranul într-un fişier PDF pe spaţiul de lucru
  • Command+Control+Shift+3 => Captează întregul ecran şi plaseazăl în clipboard
  • Command+Shift+4 => Captează o regiune de ecran într-un fişier PDF pe spaţiul de lucru
  • Command+Control+Shift+4 => Captează o regiune şi plaseaz-o în clipboard

07.06.2009

Bing Tips & Tricks

Acum, că Bing este disponibil pentru utilizare în afara Microsoft, aici sunt câteva sfaturi şi trucuri rapide care vă vor ajuta să faceti mai mult cu Bing.com.

1. Utilizaţi versiunea completă a Bing
Dacă utilizaţi Bing inafara limitelor geografice a Americii de Nord, sunt şansele ca utilizati o versiune localizată de Bing, in care pot lipsi anumite caracteristici. De exemplu, versiunea Indiei Bing.com nu are istoric de căutare şi imaginea în Pagina Bing de aici nu este atit de interactiva ca în versiunea SUA.

Pentru a explora versiunea completă de Bing, du-te la această pagină şi să setati English - US ca regiune implicita. Acum, va puteţi bucura de toate caracteristicile Bing oriunde.

2. Directioneaza Companiile de la IE Favorite Bar
Dacă căutaţi o companie stoc (de exemplu: GOOG sau MSFT), Bing va crea automat o felie de web pentru firma pe care aţi putea apoi adăuga in IE 8 si urmareste performanţele direct de la IE Favorites Bar. Ai nevoie de Internet Explorer 8 pentru a încerca această facilitate.

3. Ai grija de Previzualizare Hulu Videos dincolo de SUA
Hulu găzduieşte unele emisiuni TV populare, dar problema este că puteţi viziona aceste videoclipuri doar în cazul în care adresă IP a computerul tău este din SUA.

Cu toate acestea, Bing vă permite să urmăriţi preview-urile de Hulu video chiar şi în afara SUA. Doar executa căutarea pentru orice episod al unui show TV pe Bing Video (exemplu) şi rotiţi mausul peste oricare dintre pictograme video pentru a viziona un scurt clip.

4. Salvaţi şi transmiteti pe e-mail rezultatele căutării

Cu Bing, puteţi salva istoricul căutării la un local cu privire, dosar, în interiorul Bing-ului sau pe acauntul Windows Skydrive. Alternativa, puteţi să vă trimiteţi interogări de căutare unui prieten prin e-mail sau sa le publicati pe "peretele" Facebook, prin intermediul Bing. Veţi avea nevoie de Silverlight pentru a partaja interogări în Bing.


5. RSS Feeds cu rezultate de căutare
Spre deosebire de Google sau Yahoo, Bing ofera fluxuri RSS pentru rezultatele lor de căutare pe Web, la care puteţi să vă abonaţi, la interiorul oricărui cititor de fluxuri. Browser-ul dumneavoastră trebuie să fie în stare să auto-detecteze fluxuri RSS al paginilor din Bing sau puteţi adăuga &format=rss Bing la orice URL de căutare şi sa-o transformati într-un flux RSS.

6. Găsiţi pagini care au legatura cu fişiere MP3 sau Documente
Bing (şi Live Search) suportă un unic "contains" operator de căutare, care vă permite să găsiţi pagini web care conţin link-uri la anumite tipuri de fişiere. De exemplu, o căutare ca Susan Boyle conţine: mp3 va afişa pagini care sunt legate de cantareata britanica, de asemenea, acestea au legatura si cu fişiere MP3.

Va urma ...

07.05.2009

Creaţi disc de reiniţializare a parolei

Windows permite crearea mai multor conturi de utilizator si s-ar putea ca fiecare dintre acestea sa aiba asociata o parola. In cazul in care ati uitat-o, nu trebuie sa va faceti prea multe griji. Aceasta va putea fi recuperata ulterior utilizind un disc de reinitializare a parolei.De retinut este faptul ca discul de reinitializare a parolei poate fi folosit doar pentru utilizatorii locali. Ce trebuei sa faceti pentru crearea acestui disc:
  1. Conectati un dispozitiv de stocare extern, cum ar fi un stick USB.
  2. Dati clic pe Start|Control Panel
  3. Faceti un dublu clic pe User Accounts.
  4. Dati clic pe linkul Create a password reset disk, aflat in panoul din partea stinga.
  5. Clic pe Next si selectati dispozitivul de stocare.
  6. In urmatoarea fereastra, introduceti parola actuala a contului si faceti clic pe Next.
  7. In momentul in care ati terminat, dati clic pe Finish. Pentru a reseta parola folosindu-va de discul creat, urmariti pasii de mai jos:
  8. Conectati dispozitivul USB.
  9. Cind apare ecranul de logare, nu trebuie decit sa plasati cursorul pe cimpul dedicat parolei si sa apasati Enter.
  10. Acum veti putea vedea linkul Reset Password.
  11. Clic pe Next.
  12. Introduceti noua parola, rescrieti-o si introduceti si o sugestie pentru parola voastra in cimpul corespunzator.
  13. La final, dati clic pe Next. Acum va veti putea loga la sistem folosindu-va de noua parola.

01.05.2009

Fişiere năvăraşe

Ati descoperit existenta unui fisier in calculatorul vostru pe care-l suspectati a fi virusat si pe care, in ciuda eforturilor sustinute de catre programe specializate, nu ati reusit sa-l stergeti. Situatii de acest gen sunt destul de des intilnite, din pacate. Daca, dupa siteva incercari, fisierul se incapatineaza totuşi să se agaţe de sistemul vostru, puteţi folosi acest sfat pentru a-l elimina definitiv:
  1. Clic pe Start si tastati CMD in cimpul Open. Lasati fereastra de comanda deschisa.
  2. Inchideti toate programele ce ruleaza pe calculator.
  3. Acum, clic pe Start si tastati TASKMRG.EXE.
  4. Selectati explorer.exe din registrul Processes si dati clic pe butonul End Process. Nu inchideti fereastra Task Manager.
  5. Mergeti inapoi la ferestra Command Prompt si cautati directorul ce contine fisierul in cauza. Spre exemplu, daca fisierul este localizat pe partitia J, tastati "J" si apoi apasati Enter.
  6. In aceeasi fereastra Command Prompt, tastati "DEL" si numele fisierului pe care il veti sterge. Spre exemplu, "Del file.doc".
  7. Dupa ce ati terminat, intoarceti-va la Task Manager.
  8. Din meniul File, selectati New Task si tastati "explorer.exe" in caseta de texte. Aceasta comanda va restarta interfata grafica.

30.04.2009

MFC Tips - Common Dialogs

Cum "controlez" un control dintr-un common dialog?

Problema:
Am un dialog comun, sa zicem "File Open" si vreau (doar un exemplu), sa schimb textul unui control tip static.
Pare simplu, nu trebuie decat sa derivez din CFileDialog, sa suprascriu functia OnInitDialog iar acolo apelez GetDlgItem si SetWindowText sau direct SetDlgItemText (ID-ul controlului l-am gasit cu Spy++).
Nu merge. GetDlgItem intoarce NULL iar SetDlgItemText nu schimba absolut nimic.

Rezolvare:
De fapt, clasele derivate din CComonDialog (CFileDialog, CFontDialog, CColorDialog, etc) incapsuleaza un child al dialogului comun ce contine controalele. Deci trebuie sa-i gasim mai intai parent-ul.

Exemplu:

Cod:
class CMyFileDialog : public CFileDialog
{
// ...
// Overrides
public:
virtual BOOL OnInitDialog();
// ...
};

#include <DLGS.H>
// ...
BOOL CMyFileDialog::OnInitDialog()
{
CFileDialog::OnInitDialog();
// ...
GetParent()->SetDlgItemText(stc3, _T("Ala bala portocala"));
// ...
return TRUE;
}

NOTA: In exemplul de mai sus am folosit ID-ul 'stc3' definit in <DLGS.H>.

26.04.2009

MFC Tips - Application

Cum gasim folder-ul aplicatiei?
Problema:
Se intampla ca o aplicatie sa failizeze atunci cand cauta un fisier in folder-ul ei sau intr-un sub-folder desi acel fisier este bine-mersi acolo. Cele mai posibile cauze sunt doua: sau programatorul a folosit numai numele fisierului, sau a folosit un full-path-and-file-name batut in cod (ex: "c:\Program Files\MyCoolApp\MyLog.txt").

In primul caz se va folosi directorul curent al aplicatiei dar acesta nu este neaparat acelasi cu folderul aplicatiei (directorul curent poate fi diferit inca de la lansarea aplicatiei sau poate fi schimbat la run-time).

In al doilea caz, aplicatia insasi poate fi instalata in alt folder (in exemplul nostru "c:\Program Files\..." sau chiar foldere speciale cum sunt "Program Files" pot avea denumiri diferite in functie de versiunea de OS, limba, etc).

Rezolvare (1):
Una dintre solutii ar fi sa "extragem" folderul applicatiei din membrul public m_pszHelpFilePath al clasei aplicatiei (derivata din CWinApp):

Cod:
bool CFoo::GetAppPath(CString& strAppPath)
{
bool bFound = false;
strAppPath.Empty();
CWinApp* pApp = AfxGetApp();
if(NULL != pApp)
{
strAppPath = pApp->m_pszHelpFilePath;
// extract the application path
const int nPos = strAppPath.ReverseFind(_T('\'));
if(-1 != nPos)
{
bFound = true;
strAppPath = strAppPath.Left(nPos);
}
}
return bFound;
}


Rezolvare (2):
Prima metoda ar fi destul de buna, dar mai sigur si chiar mai simplu este sa folsim functia WinAPI GetModuleFileName careia ii pasam NULL in primul parametru:

Cod:
void GetAppPath(CString& strAppPath)
{
::GetModuleFileName(NULL, strAppPath.GetBuffer(MAX_PATH), MAX_PATH);
strAppPath.ReleaseBuffer();
// extract the application path
const int nPos = strAppPath.ReverseFind(_T('\'));
strAppPath = strAppPath.Left(nPos);
}


Cum customizez AfxMessageBox?
Rezolvare:
AfxMessageBox cheama intern functia virtuala CWinApp::DoMessageBox. Exemplul urmator suprascrie CWinApp::DoMessageBox si schimba textul de pe caption (default, numele aplicatiei sau fisierului executabil)

Exemplu:

Cod:
// MyApp.h

class CMyApp : public CWinApp
{
// ...
// Overrides
public:
virtual int DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt);
// ...
};

// MyApp.cpp

int CMyApp::DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt)
{
// keep in mind m_pszAppName pointer
LPCTSTR pszAppName = m_pszAppName;
// assign the new desired name
m_pszAppName = _T("My Cool Message Box");
// call base class function
int nRet = CWinApp::DoMessageBox(lpszPrompt, nType, nIDPrompt);
// restore initial m_pszAppName pointer then return
m_pszAppName = pszAppName;
return nRet;
}

20.04.2009

MFC Tips - Dialog

Cum schimbam numele clasei unui dialog?
Problema:
Dialoagele fac parte din clasa fereastra predefinita "#32770". Se poate ivi cerinta de a schimba numele clasei unuia sau mai multe dialoage din aplicatie, de exemplu cu scopul de a fi usor diferentiate atunci cand le cautam cu FindWindow, FindWindowEx, etc sau atunci cand folosim o scula de testare automata.

Rezolvare:
VS6.0
  1. In fereastra "ResourceView" dau right-click pe radacina tree-ului si selectez "Properties".
  2. In dialogul "Resource File Properties" decheckuiesc "Enable MFC features".
  3. Dau right-click pe dialog template si aleg "Properties".
  4. In dialogul "Dialog Properties", introduc noul nume al clasei, ex. "Mama Leone"; NOTA: in lipsa primilor doi pasi, campul "Class name" este disabled.
  5. In sfarsit, in functia InitInstance al aplicatiei MFC adaug urmatorul cod:

    Cod:
    WNDCLASS wc;

    // Get the info for this class.
    // #32770 is the default class name for dialogs boxes.
    ::GetClassInfo(AfxGetInstanceHandle(), _T("#32770"), &wc);

    // Change the name of the class.
    wc.lpszClassName = _T("Mama Leone");

    // Register this class so that MFC can use it.
    AfxRegisterClass(&wc);
VS2003, VS2005
  • In fereastra "Resource View" dau right-click pe numele fisierului .rc si selectez "Properties"
  • Schimb "MFC Mode" din True in False.
  • ...Urmeaza pasi similari cu cei de la VS6.0...
NOTA: Numele clasei se poate adauga si manual in fisierul de resurse (.rc) folosind optiunea "CLASS".

Exemplu:

Cod:
IDD_MY_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION
| DS_MODALFRAME
| WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "My Dialog"
CLASS "Mama Leone"

19.04.2009

MFC Tips - Common Controls

Cum inlocuim o line intr-un edit multiline?
Cine cauta in (editii mai vechi) de MSDN s-ar putea sa gaseasca aceasta:

Exemplu:

Cod:
// The pointer to my edit.
extern CEdit* pmyEdit;
// The string for replacing.
extern LPCTSTR lpszmyString;

int nBegin, nEnd;

// Replace the second line, if it exists, of the edit control
// with the text lpszmyString.
if ((nBegin=pmyEdit->LineIndex(1)) != -1)
{
nEnd = nBegin + pmyEdit->LineLength(1);
pmyEdit->SetSel(nBegin, nEnd);
pmyEdit->ReplaceSel(lpszmyString);
}

Iata o forma mai usor de citit de programatorii MFC:

Cod:
CString strText = _T("Replaced text");
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
int nBegin = pEdit->LineIndex(1);
if(-1 != nBegin)
{
int nEnd = nBegin + pEdit->LineLength(1); // gresit!
pEdit->SetSel(nBegin, nEnd);
pEdit->ReplaceSel(strText);
}

Problema:
Exemplul de mai sus nu functioneaza pentru ca functia CEdit::LineLength trebuie sa primeasca un "character index" (cel intors de functia CEdit::LineIndex), adica indexul primului caracter din linie numarat de la inceputul textului si nu indexul liniei.

Rezolvare:
(vezi spre comparatie linia in care se apeleaza LineLength)

Cod:
CString strText = _T("Replaced text");
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
int nBegin = pEdit->LineIndex(1);
if(-1 != nBegin)
{
int nEnd = nBegin + pEdit->LineLength(nBegin); // OK.
pEdit->SetSel(nBegin, nEnd);
pEdit->ReplaceSel(strText);
}

NOTA: in editiile mai noi de MSDN aceasta greseala a fost corectata.

Cum adaug text la un edit control?
Problema:
O metoda des utilizata este de a scoate textul initial cu GetWindowText pentru a adauga textul, apoi a-l pune inapoi cu SetWindowText.

Exemplu:

Cod:
CString strText;
edit.GetWindowText(strText);
strText += pszNewText;
edit.SetWindowText(strText);

Totusi, mai ales in cazul edit-urilor multiline, daca textul din edit este foarte lung iar adaugarile se fac des, metoda nu este chiar asagrozava.

Rezolvare:
Pentru controlul edit setam selectia la sfarsitul textului existent apoi o inlocuim cu textul de adaugat. E mai rapid si nici nu e nevoie de un string intermediar.

Exemplu:

Cod:
// get the text length
const int nLength = edit.GetWindowTextLength();
// set the selection at the end of text
edit.SetSel(nLength, nLength);
// replace selection (append the text).
edit.ReplaceSel(pszNewText);

Rich Edit control - rule #0

Problema:
Tocmai am pus intr-un dialog un contor tip rich edit. Aplicatia se compileaza bine-mersi, dar cand rulez programul, dialogul "refuza" sa mai apara.

Rezolvare:
S-a uitat sau n-am stiut regula #0: controlul trebuie initializat cu AfxInitRichEdit.

Exemplu:

Cod:
BOOL CMyApp::InitInstance()
{
AfxInitRichEdit();
// ...
}

18.04.2009

MFC Tips - SDI / MDI Framework

Cum schimbam titlul intr-un frame window?
Problema:
Intr-o aplicatie SDI/MDI, de obicei se afiseaza pe bara de titlu un string de forma "nume_document - nume_aplicatie" pentru frame-ul principal sau "nume_document" pentru un frame MDI child.

Exemple
  • Untitled - MyApp
  • Test.txt - MyApp
  • Test.txt

Daca incercam sa schimbam asta pur si simplu apeland SetWindowText din oarece loc, nu merge, pentru ca avem toate sansele ca framework-ul sa foloseasca din nou schema de mai sus si sa inlocuiasca titlul nostru schimbat "cu atata truda".

Rezolvare:
Suprascriem functia virtuala (nedocumentata) CFrameWnd::OnUpdateFrameTitle.

Cod:
// MainFrm.h

class CMainFrame : public CFrameWnd // NOTA: poate fi de asemenea
// CMDIChildWnd
// sau CMDIFrameWnd
{
// ...
virtual void OnUpdateFrameTitle(BOOL bAddToTitle);
// ...
};

// MainFrm.cpp
void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
{
SetWindowText(_T("My Cool App Title"));
}

16.04.2009

MFC Tips - Files and Folders

Cum citesc un fisier text linie cu linie?
Rezolvare:
Simplu. Instantiez un obiect tip CStdioFile si apelez CStdioFile::ReadString pana citesc toate liniile (pana cand ReadString intoarce FALSE).

Exemplu:

Cod:
void CFoo::ReadTextFile(LPCTSTR pszFileName, CStringArray& arrLines)
{
arrLines.RemoveAll();
CString strLine;
TRY
{
CStdioFile file(pszFileName, CFile::modeRead);
while(file.ReadString(strLine))
{
arrLines.Add(strLine);
}
}
CATCH_ALL(e)
{
e->ReportError(); // shows what's going wrong
}
END_CATCH_ALL
}


Cum citesc intreg continutul unui fisier (text) intr-un obiect de tip CString?
Rezolvare:
Instanitiez un obiect de tip CFile, ii aflu lungimea cu CFile::GetLength apoi apelez functia CFile::Read.

Exemplu:

Cod:
void CFoo::ReadTextFile(LPCTSTR pszFileName, CString& strText)
{
strText.Empty();
TRY
{
CFile file(pszFileName, CFile::modeRead);
const DWORD dwLength = file.GetLength();
file.Read(strText.GetBuffer(dwLength), dwLength);
strText.ReleaseBuffer();
}
CATCH_ALL(e)
{
e->ReportError();
}
END_CATCH_ALL
}

    Blog din Moldova    FastCounter 

 
Copyright © 2008-2010 Foster1. All rights reserved.