- 1
- 2
- 3
- 4
- 5
- 6
<div class="book-info">
<strong class="book">${label}</strong>
{{!if desc && desc != "None None"}}
<span class="author">${desc}</span>
{{!/if}}
</div>
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−101
<div class="book-info">
<strong class="book">${label}</strong>
{{!if desc && desc != "None None"}}
<span class="author">${desc}</span>
{{!/if}}
</div>
Это кусочек из JQuery template. Ему на вход приходит JSON, сформированный в Python.
Кто бы догадался, что означает это "None None"?
Да, это случай, когда имя и фамилия автора книги неизвестны. Вместо того, чтобы в классе Book сделать нормальный метод getAuthor, чуваки предпочли наговнякать такой вот IF в клиентской части.
+131
1
1
Имеется графический обозреватель картинок, где мини-изображения хранятся в ImageList, а выводятся ListView (поименованные графические файлы). При открытие папок с картинками (где большое количество картинок) возникает торможение отображения. Вся программа начинает тормозить, ожидая загрузки картинок в ListView. Чтобы избежать такого, я вынес загрузку ListBox в отдельный процесс Thread. В результате возникла другая проблема: при загрузке картинок, часть загружается просто черными квадратами. Как избавиться от этого неприятного эффекта?
Код выбора папки для дальнейшего просмотра содержимого:
procedure TForm1.DirectoryListBox1Change(Sender: TObject);
begin
Form1.ListView1.Clear;
Form1.ImageList1.Clear;
NewThread:=TNewThread.Create(false);
NewThread.FreeOnTerminate:=true;
NewThread.Priority:=tpHighest;
NewThread.Resume;
end;
Код отдельно выделенного процесса:
procedure TNewThread.Execute;
begin
Form1.FillListView(form1.DirectoryListBox1.Directory , '*.jpg');
Form1.FillListView(form1.DirectoryListBox1.Directory, '*.bmp');
end;
И наконец код обработки графических файлов с последующей загрузкой в ListBox:
procedure TForm1.fillListView(path: string; mask: string = '*.jpg');
var
sr: TSearchRec;
img: TPicture;
bmp: TBitmap;
pic: TBitMap;
x,y: integer;
begin
img := TPicture.Create;
bmp := TBitMap.Create;
pic := TBitMap.Create;
With Form1 do
if FindFirst(path +'\'+mask, faAnyFile, sr) = 0 then
begin
repeat
if (sr.Name<>'.') and (sr.Name<>'..') and (sr.Attr<>faDirectory) then
//if (sr.Attr and $20) = $20 then
begin
try
img.LoadFromFile(path +'\'+ sr.Name);
except
Continue;
end;
bmp.Assign(img.Graphic);
x:=bmp.Width;
y:=bmp.Height;
pic.Width := ImageList1.Width;
pic.Height:= ImageList1.Height;
pic.Canvas.Brush.Color :=clWhite;
pic.Canvas.FillRect(Canvas.ClipRect);
pic.Canvas.StretchDraw(Rect(0,0,pic.Width, Round((pic.Height*y)/x)), bmp);
ImageList1.Add(pic, nil);
with ListView1.Items.Add do
begin
Caption := sr.Name;
ImageIndex := ListView1.Items.Count-1;
end;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
img.Free;
bmp.Free;
pic.Free;
end;
Не сопротивляйся, смерть сладка.
http://hashcode.ru/questions/86688/delphi-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-listview-%D0%B2-%D0%B4%D0%B5%D0%BB%D1%84%D0%B8
+129
/*
* Пример программы шифрующей данные симметрично по ключу.
*
* Параметры командной строки:
*
* /program_path [source file path] [destenation file path] [key] [type]
*
* [key] - кодовое слово длинной не более 255 символов.
* [key] - принимает два параметра cript и uncript (шифровать/расшифровать)
*
* Пример использования аргументов:
*
* "/home/aleksandr/Рабочий стол/Крипт/s_cript" "/home/aleksandr/Рабочий стол/Крипт/simple_file_1.txt" "/home/aleksandr/Рабочий стол/Крипт/simple_file_2.txt" simplekey cript
* "/home/aleksandr/Рабочий стол/Крипт/s_cript" "/home/aleksandr/Рабочий стол/Крипт/simple_file_2.txt" "/home/aleksandr/Рабочий стол/Крипт/simple_file_3.txt" simplekey uncript
*
* :P
*
*/
#include <stdio.h>
#include <limits.h>
#include <string.h>
void cript_uncript(FILE* src_fp, FILE* dst_fp, char* key_X, char* block, _Bool type)
{
unsigned char i, real;
while((real = fread(block, sizeof(char), UCHAR_MAX, src_fp)) > 0){
for(i = 0; i < real; i++){
if(type == 0)
block[i] = block[i] + key_X[i];
else if(type == 1)
block[i] = block[i] - key_X[i];
}
fwrite(block, sizeof(char), real, dst_fp);
}
}
void generate_key(char* key, char* key_X){
unsigned char len, i, n = 0;
len = strlen(key) - 1;
for(i = 0; i < UCHAR_MAX; i++) {
key_X[i] = key[n];
if(n++ == len) n = 0;
}
}
int main(int argc, char* argv[]){
FILE* src_fp;
FILE* dst_fp;
char key[UCHAR_MAX], block[UCHAR_MAX], key_X[UCHAR_MAX], s[UCHAR_MAX];
char src_path[1024], dst_path[1024];
if(argc < 4){
puts("not enough arguments\n");
return -1;
}
else{
strcpy(src_path, argv[1]);
strcpy(dst_path, argv[2]);
strcpy(key, argv[3]);
strcpy(s, argv[4]);
}
if((src_fp = fopen(src_path, "rb")) != NULL){
if((dst_fp = fopen(dst_path, "wb")) != NULL){
generate_key(key, key_X);
if(strcmp(s, "cript") == 0)
cript_uncript(src_fp, dst_fp, key_X, block, 0);
if(strcmp(s, "uncript") == 0)
cript_uncript(src_fp, dst_fp, key_X, block, 1);
}
else return -1;
fclose(src_fp);
}
else return -1;
fclose(dst_fp);
Пример программы шифрующей данные симметрично по ключу
+122
#if defined(REG_R1) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R1,REG_R1)
#else
# define R1 (BaseReg->rR1)
#endif
#if defined(REG_R2) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R2,REG_R2)
#else
# define R2 (BaseReg->rR2)
#endif
#if defined(REG_R3) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R3,REG_R3)
#else
# define R3 (BaseReg->rR3)
#endif
#if defined(REG_R4) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R4,REG_R4)
#else
# define R4 (BaseReg->rR4)
#endif
#if defined(REG_R5) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R5,REG_R5)
#else
# define R5 (BaseReg->rR5)
#endif
#if defined(REG_R6) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R6,REG_R6)
#else
# define R6 (BaseReg->rR6)
#endif
#if defined(REG_R7) && !defined(NO_GLOBAL_REG_DECLS)
GLOBAL_REG_DECL(StgUnion,R7,REG_R7)
#else
# define R7 (BaseReg->rR7)
#endif
...
Исходник GHC
https://github.com/ghc/ghc/blob/master/includes/stg/Regs.h#L147
+125
slowCallPattern (P: P: P: P: P: P: _) = (fsLit "stg_ap_pppppp", 6)
slowCallPattern (P: P: P: P: P: _) = (fsLit "stg_ap_ppppp", 5)
slowCallPattern (P: P: P: P: _) = (fsLit "stg_ap_pppp", 4)
slowCallPattern (P: P: P: V: _) = (fsLit "stg_ap_pppv", 4)
slowCallPattern (P: P: P: _) = (fsLit "stg_ap_ppp", 3)
slowCallPattern (P: P: V: _) = (fsLit "stg_ap_ppv", 3)
slowCallPattern (P: P: _) = (fsLit "stg_ap_pp", 2)
slowCallPattern (P: V: _) = (fsLit "stg_ap_pv", 2)
slowCallPattern (P: _) = (fsLit "stg_ap_p", 1)
slowCallPattern (V: _) = (fsLit "stg_ap_v", 1)
slowCallPattern (N: _) = (fsLit "stg_ap_n", 1)
slowCallPattern (F: _) = (fsLit "stg_ap_f", 1)
slowCallPattern (D: _) = (fsLit "stg_ap_d", 1)
slowCallPattern (L: _) = (fsLit "stg_ap_l", 1)
slowCallPattern (V16: _) = (fsLit "stg_ap_v16", 1)
slowCallPattern [] = (fsLit "stg_ap_0", 0)
Исходник GHC
https://github.com/ghc/ghc/blob/master/compiler/codeGen/StgCmmArgRep.hs#L120
+133
void mb_sim_pix(uchar* IN, uchar* OUT, int *WH, int *bSize, int *A, int *pSize, float *threshold){
int pos = mb_calc_pos(A, WH, pSize);
int nPos;
int i, n;
int B[2];
for(n = 0; n < 4; n++){
switch(n){
case 0:
B[0] = A[0] + 1;
B[1] = A[1];
case 1:
B[0] = A[0];
B[1] = A[1] - 1;
case 2:
B[0] = A[0];
B[1] = A[1] + 1;
case 3:
B[0] = A[0] - 1;
B[1] = A[1];
}
if( B[0] >= 0 && B[0] < WH[0] &&
B[1] >= 0 && B[1] < WH[1]){
nPos = mb_calc_pos(B, WH, pSize);
if(mb_val_pix(OUT, &nPos, pSize) == 0){
if(mb_sim_pack(IN, &pos, &nPos, pSize) >= *threshold){
for(i = 0; i < *pSize; i++) OUT[nPos + i] = IN[nPos + i];
mb_sim_pix(IN, OUT, WH, bSize, B, pSize, threshold);
}
}
}
}
}
Тоже самое через if работает, а через switch проваливается на значении 0 все итерации. Почему?
+75
int i, n;
for(n = 0; n < 3; n++)
{
switch(n){
case 0:
n+=i;
case 1:
n-=i;
case 2:
n*=i;
}
}
Написал это, встал и хорошенько вымыл руки с мылом.
http://programmersforum.ru/showthread.php?t=241288
+12
struct c_test
{
int value;
c_test(void)
{
(void)new (this) c_test (10);
}
c_test(int v)
{
value = v;
}
};
+146
$rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => $arResult['IBLOCK_ID']), false, array("UF_TEMPLATE_TYPE"));
while ($ar = $rsResult->GetNext()) {
if ($ar["UF_TEMPLATE_TYPE"]) {
var_dump($ar["UF_TEMPLATE_TYPE"]);
}
}
+68
LineDir ld = ild.next();
int y = ld.getYDirAdj(), h = ld.getHeightDir();
PDFTextStripperByArea pts = new PDFTextStripperByArea();
pts.addRegion("column3", new Rectangle(470,y,70,h));
pts.addRegion("column4", new Rectangle(540,y,50,h));
pts.extractRegions(page);
try {
int g = 0;
String column3 = pts.getTextForRegion("column3").trim();
String column4 = pts.getTextForRegion("column4").trim();
if (column3.isEmpty()) {
g = 1/0;
}
g = Integer.valueOf(column4);
} catch(Exception e) {
ild.remove();
}
Парсил pdf ничего лучше чем проверка нахождения 1)непустой строки(11) и 2)числа(14) в выбраных областях не нашел (в этих строках всегда есть эти столбцы). 2 если там не число то будет ошибка а в 1 сделал что бы ошибка за компанию была )