|
Страници по тази тема: 1 | 2 | (покажи всички)
Тема
|
Пак да се посмеем на M$
|
|
Автор | user (Нерегистриран) |
Публикувано | 20.02.05 20:49 |
|
Вижте какво намерих в документацията на .NET Framework 1.1 ():
----------------------------------------------------------------
HttpFileCollection MyFileCollection;
HttpPostedFile MyFile;
int FileLen;
System.IO.Stream MyStream;
MyFileCollection = Request.Files;
MyFile = MyFileCollection[0];
FileLen = MyFile.ContentLength;
byte[] input = new byte[FileLen];
// Initialize the stream.
MyStream = MyFile.InputStream;
// Read the file into the byte array.
MyStream.Read(input, 0, FileLen);
// Copy the byte array into a string.
for (int Loop1 = 0; Loop1 < FileLen; Loop1++)
MyString = MyString + input[Loop1].ToString();
----------------------------------------------------------------
Ето някои от проблемите, които аз открих и изпратих на MS (дано feedback-а на MSDN-а някой да го чете):
1) In C# local variables should be in camelCase
2) It is bad practice in C# to define the variables before they are actually needed due to increase of their lifetime and span (It is not VB.NET!)
3) Read method could potentially read less than FileLen bytes. It is bad practice to rely that it will read exactly FileLen bytes
4) Concatenation of strings in loop is well-known bad practice - StringBuilder should be used instead
5) There is a method for convertion from byte array to string - Encoding.ASCII.GetBytes(string)
6) Loop1 is the for-loop is great name for a variable
7) "input" is bad name for the byte array that storers the file contents
Мисля този код да го давам за пример как не трябва да се пише код.
| |
|
Каква сърцераздирателна драма.
| |
Тема
|
Re: Пак да се посмеем на M$
[re: user]
|
|
Автор |
Teляka (изодзадзе) |
Публикувано | 21.02.05 00:30 |
|
You are my hero!
След твоите разкрития спирам да чета МСДН и отивам да си инсталирам линукс! Майкрософт наистина доказаха, че са зле.
Георги Чорбаджийски президент!
---------------------------------------------
Внимавай в банята, че съм отзад!!!
| |
|
ама и какво заглавие е турнал в тия взривоопасни времена тоя уикенд, само Гуру да се върне от киното да видим какво става... пък като гледам някой вече се е изказал по-долу  
| |
Тема
|
Re: Пак да се посмеем на M$
[re: __me]
|
|
Автор |
Гypy (бенгбъс драйвър) |
Публикувано | 21.02.05 07:28 |
|
Бриджит Джоунс 2 управлява
--
Sometimes the sole purpose of your life is to serve as a warning to others.
| |
Тема
|
Reuse на темата
[re: user]
|
|
Автор |
Questor (работник) |
Публикувано | 22.02.05 18:26 |
|
Я да 'реюзна' темата -
вижте на какви интересни Шел функции попаднах, добавени в XP да не каже човек, че са някакви останки от едно време:
Като за начало:
SHGetUnreadMailCount Function
Обаче още по-интересно - има и
SHSetUnreadMailCount Function
(да оставим на страна за чий му е това на шела, ама толкова ли няма COM за тия хора...)
След това, от край време WinExec е obsolete и за 16 bit compatibility.
Обаче, следната функция е добавена в Windows XP:
WinExecError Function
-----
Retrieves the error value generated if the WinExec function cannot run a specified application.
Syntax
VOID WinExecError(HWND hwnd,
int error,
LPCTSTR lpstrFileName,
LPCTSTR lpstrTitle
);
И най-интересното, забележете, че връща VOID...
Сигнатура!
| |
Тема
|
Re: Пак да се посмеем на M$
[re: user]
|
|
Автор |
G.Kreisel () |
Публикувано | 22.02.05 20:11 |
|
Днес ми се наложи да се боря с винапита и ето на какви бисери попадам. Може и да не разбирам ИДЕОЛОГИЯТА която стои зад тях, затова ако бъркам - моля обяснете ми.
Днес, след епични битки с мсдн-а много сериозно се издразних на пълната му безполезност и на следните неща:
BOOL MiniDumpWriteDump(
HANDLE hProcess,
DWORD ProcessId,
HANDLE hFile,
MINIDUMP_TYPE DumpType,
PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);
hProcess
[in] Handle to the process for which the information is to be generated. This handle must have read and query access.
ProcessId
[in] Identifier of the process for which the information is to be generated.
Не ги разбирам аз тези апита, ама ProcessId не е ли излишно?
Още повече че има и функция: GetProcessId(HANDLE hProcess)
(за която сега ще стане дума (или по-точно за глупостите в мсдн по неин адрес))
Освен това в моята версия на мсдн има следните две функции:
void GetThreadId(
HANDLE Thread
);
If the function succeeds, the return value is the thread identifier of the specified thread.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
void GetProcessId(
HANDLE Process
);
Return Values
If the function succeeds, the return value is the process identifier of the specified process.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Забелязахте ли как void функции връщат стойност?
В online версията на мсдн вече е оправено.
Сега да споменавам ли как се отваря файл? С CreateFile, което има поне 7 параметъра.
А как се затваря? С CloseHandle !!!
Само не разбирам що не се пише вътре с WriteSocket и не се чете с ReadProcess !
Това само за днес. Добре че такива работи ми се налагат веднъж на няколко години...Дано не се налага повече.
Microsoft is not the answer. It is the question, and the answer is no.
| |
|
6) Loop1 is the for-loop is great name for a variable
LOL! Май пак стават модерни делфийските имена. Малко небрежно са писали хелпа.
4) Concatenation of strings in loop is well-known bad practice - StringBuilder should be used instead
Обяснявай на някой, който за сефте вижда .НЕТ, какво е StringBuilder. А хелпа със сигурност се чете и от такива.
Редактирано от ¤ Wolfheart ¤ на 22.02.05 20:28.
| |
Тема
|
Re: Пак да се посмеем на M$
[re: G.Kreisel]
|
|
Автор | Barracuda (Нерегистриран) |
Публикувано | 23.02.05 09:07 |
|
За CreateFile - ти си хванал функция, която е специфична конкретно за Windows платформата и чрез нея можеш да получиш "малко по-специфичен достъп" до файла (имам предвид, че можеш да ползваш особеностите на NTFS).
Иначе си имаш и fopen, fread и fwrite.
За PID-a и Handle-a на процес - PID-a е глобален уникален за системата идентификатор на процес. Чрез него можеш да получиш (ако имаш права) локален дескриптор (Handle), чрез който можеш да изискаш информация за процеса или да го манипулираш. И тук забележи, чрез interprocess communication ти можеш да прехвърлиш PID-а на даден процес от твоя процес към друг, но този другия няма гаранция, че ще получи достъп за "баране". От друга страна handle-а е локален дескриптор и няма начин да се ползва от друг процес.
Иначе за грешките в MSDN-a съм напълно съгласен - има случай да си блъскам главата с дни за някои по специфични неща (а и MS по newsgroup-ите не отговарят много много за жалост) :-(
| |
|
Мерси за инфото. Имаше файда :) - малко ми просветна. :)
Това рядко се случва по тези клубове :)
Microsoft is not the answer. It is the question, and the answer is no.
| |
|
Страници по тази тема: 1 | 2 | (покажи всички)
|
|
|