Останні статті і огляди
Новини
Переквалификация в программиста
-
rocket
Member
- Звідки: Запорожье
та он же динозавр какой-то. Я с ним в 2006 работал, когда в техникуме учился
Странно, что в локал хост работает, а новые папки не поднимаются.
Перезапускал, дописывал в хост - 0
Странно, что в локал хост работает, а новые папки не поднимаются.
Перезапускал, дописывал в хост - 0
-
Ar2r
Advanced Member
А как переквалифицироваться в олигарха? Пацаны, я вам потом всем помогу. Дякую за довиру.
-
Валерий
Member
- Звідки: Kur
rocket
Может, Xampp заюзать?
https://www.apachefriends.org/index.html" target="_blank
Ar2r
Если найдешь решение, маякни
Может, Xampp заюзать?

https://www.apachefriends.org/index.html" target="_blank
Ar2r
Если найдешь решение, маякни

-
rocket
Member
- Звідки: Запорожье
Валерий
спс. Если опен не заработает, то придется xampp
Open совсем легкий
спс. Если опен не заработает, то придется xampp
Open совсем легкий
-
rocket
Member
- Звідки: Запорожье
Дошел в JS в видеокурсах уже до DOM
Уже на BOM в голове мешанина была. Столько свойств и методов, например, у тех же HTMLTableElement. Все и не запомнить/разобрать.
В BOM есть объект document, а в DOM интерфейс document. У обоих методы и свойства
Уже на BOM в голове мешанина была. Столько свойств и методов, например, у тех же HTMLTableElement. Все и не запомнить/разобрать.
В BOM есть объект document, а в DOM интерфейс document. У обоих методы и свойства

-
rocket
Member
- Звідки: Запорожье
С реальными тегами интереснее работать:
А BOM часто используется? Я в нем не очень разобрался. По тегам прыжки в DOM понятнее
DOM, как я понял, и Java юзает.
Код: Виділити все
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Таблица умножения</title>
<style type="text/css">
td{padding:10px;border:1px solid #369;}
</style>
<script type="text/javascript">
var cell = 10;
var row = 10;
function createDOM() {
/* Создайте в элементе div таблицу с помощью методов DOM */
var div = document.getElementById('d');
if (!document.getElementById('d').hasChildNodes()){
var t=document.createElement('table');
div.appendChild(t);
for (var i=1; i<=row; i++){
var tr=document.createElement('tr');
t.appendChild(tr);
for (var j=1; j<=cell; j++){
var txt = document.createTextNode(j+'x'+i+'='+i*j);
var td=document.createElement('td');
td.appendChild(txt);
tr.appendChild(td);
}
}
}else div.removeChild(div.firstChild);
}
</script>
</head>
<body>
<a href="javascript:createDOM();">Создать таблицу с помощью методов DOM</a><br>
<div id="d"></div>
</body>
</html>
DOM, как я понял, и Java юзает.
-
Sodik
Junior
- Звідки: Харьков
В основном для определения браузера (userAgent) и для работы с url (location).А BOM часто используется?
Все что работает с html страницей юзает DOM.DOM, как я понял, и Java юзает.
-
rocket
Member
- Звідки: Запорожье
спасибо
читал книгу и запнулся на 1 моменте.
Получается, что прототип - это объект P, который существует вместе с объектом A, который наследует его свойства.
При этом объект A наследует свойства и методы своего предка, а его прототип P наследует методы и свойства прототипа предка?
читал книгу и запнулся на 1 моменте.
Получается, что прототип - это объект P, который существует вместе с объектом A, который наследует его свойства.
При этом объект A наследует свойства и методы своего предка, а его прототип P наследует методы и свойства прототипа предка?
-
hgtrwds
Member
просветите плиз недоумка, как работает компилятор масм с синтаксисом интел
скомпилируйте инструкцию
какой опкод поставит b6 или b7?
может быть по логике и тот и тот, как он выбирает?
всё, понел, если var db, то байт, если dw, то 16 бит
скомпилируйте инструкцию
Код: Виділити все
.data
var db 0
......................................
.code
mov eax,2
movzx eax,var[eax]
.......................................
может быть по логике и тот и тот, как он выбирает?
всё, понел, если var db, то байт, если dw, то 16 бит

-
rocket
Member
- Звідки: Запорожье
Дошел в новой книге по js до замыканий. Запутался.
function f1(){
var b= 'bbbbb'
function f2(){
return b;
}
return f2;
}
var start = f1()
var end = start();
в нудной книге говорили, что переменная b будет доступна функции f2, потому что объект функции f2 не удаляется чистильщиком стека, пока на него или его свойство есть хоть 1 ссылка.
А в книге с котиками говорят, что объект внешней функции убивает и удаляется. А переменная b доступна внутренней функции потому, что при присваивании ее переменнной start к ссылке функции f2 прилепляется еще среда выполнения, в которой хранятся все переменный из ее области видимости.
Что правильнее? Мне кажется, что первый вариант логичнее
function f1(){
var b= 'bbbbb'
function f2(){
return b;
}
return f2;
}
var start = f1()
var end = start();
в нудной книге говорили, что переменная b будет доступна функции f2, потому что объект функции f2 не удаляется чистильщиком стека, пока на него или его свойство есть хоть 1 ссылка.
А в книге с котиками говорят, что объект внешней функции убивает и удаляется. А переменная b доступна внутренней функции потому, что при присваивании ее переменнной start к ссылке функции f2 прилепляется еще среда выполнения, в которой хранятся все переменный из ее области видимости.
Что правильнее? Мне кажется, что первый вариант логичнее
-
freedom2686
HWBOT OC Team
- Звідки: Бар
Я бы начал с xCode - это очень прибыльно!
-
rocket
Member
- Звідки: Запорожье
freedom2686
это вообще не язык программирования, а среда разработки

это вообще не язык программирования, а среда разработки

-
freedom2686
HWBOT OC Team
- Звідки: Бар
А кто вам сказал что это язык программирования?rocket:freedom2686
это вообще не язык программирования, а среда разработки
Да, xCode - objective c с некоторыми своими нюансяами.
У меня товарищь нормально на этом зарабатывает, правда башляет 99у.е. в год, но ему норм. Зарабатывает больше.
-
rocket
Member
- Звідки: Запорожье
Objective-C - это язык программирования.
-
freedom2686
HWBOT OC Team
- Звідки: Бар
Я в курсе. Спасибо.rocket:Objective-C - это язык программирования.

-
rocket
Member
- Звідки: Запорожье
этот текст противоречит сам себеfreedom2686:А кто вам сказал что это язык программирования?
Да, xCode - objective c с некоторыми своими нюансяами.
-
comandarm
Member
необходимо отладить простыню
где-то ошибка, падает в segmentation fault после enqueuendrangekernel, как такое отлаживать?
если в случае с цпу помогает обычный printf, то тут..
год назад оно у меня работало, может другая ревизия amd app sdk programming guide была, может еще что-то — не знаю, но сейчас в полном тупике...
есть здесь собратья по разуму, gpu программисты?
Код: Виділити все
#include <CL/cl.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "Timer.h"
#define NDEVS 2
const char* kernel_source=
"#pragma OPENCL EXTENSION cl_khr_local_int32_extended_atomics:enable\n"
"#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics:enable\n"
"#pragma OPENCL EXTENSION cl_amd_printf : enable\n"
"__kernel void minp(__global uint4 *src,\n"
"__global uint *gmin,\n"
"__local uint *lmin,\n"
"__global uint *dbg,\n"
"int nitems,\n"
"uint dev)\n"
"{\n"
"printf(\"ok\\n\");\n"
"uint count=(nitems/4)/get_global_size(0);\n"
"uint idx=(dev==0)?get_global_id(0)*count:get_global_id(0);\n"
"uint stride=(dev==0)?1:get_global_size(0);\n"
"uint pmin=(uint)-1;\n"
"for(int n=0;n<count;n++,idx+=stride)\n"
"{\n"
"pmin=min(pmin,src[idx].x);\n"
"pmin=min(pmin,src[idx].y);\n"
"pmin=min(pmin,src[idx].z);\n"
"pmin=min(pmin,src[idx].w);\n"
"}\n"
"if(get_local_id(0)==0)\n"
"lmin[0]=(uint)-1;\n"
"barrier(CLK_LOCAL_MEM_FENCE);\n"
"(void) atom_min(lmin,pmin);\n"
"barrier(CLK_LOCAL_MEM_FENCE);\n"
"if(get_local_id(0)==0)\n"
"gmin[get_group_id(0)]=lmin[0];\n"
"if(get_global_id(0)==0)\n"
"{\n"
"dbg[0]=get_num_groups(0);\n"
"dbg[1]=get_global_size(0);\n"
"dbg[2]=count;\n"
"dbg[3]=stride;\n"
"}\n"
"}\n"
"__kernel void reduce(__global uint4 *src,\n"
"__global uint *gmin)\n"
"{\n"
"(void) atom_min(gmin,gmin[get_global_id(0)]);\n"
"}\n";
int main(int argc,char ** argv)
{
cl_platform_id platform;
int dev,nw;
cl_device_type devs[NDEVS]={CL_DEVICE_TYPE_CPU,CL_DEVICE_TYPE_GPU};
cl_uint *src_ptr;
unsigned int num_src_items = 4096*4096;
time_t ltime;
time(<ime);
src_ptr = (cl_uint *)malloc(num_src_items*sizeof(cl_uint));
cl_uint a = (cl_uint) ltime,
b = (cl_uint) ltime;
cl_uint min = (cl_uint) - 1;
for(int i=0;i<num_src_items;i++)
{
src_ptr[i]=(cl_uint)(b=(a*(b&65535))+(b>>16));
min=src_ptr[i]<min?src_ptr[i]:min;
}
clGetPlatformIDs(1,&platform,NULL);
for(dev=0;dev<NDEVS;dev++)
{
cl_device_id device;
cl_context context;
cl_command_queue queue;
cl_program program;
cl_kernel minp;
cl_kernel reduce;
cl_mem src_buf;
cl_mem dst_buf;
cl_mem dbg_buf;
cl_uint *dst_ptr,*dbg_ptr;
printf("\n%s",dev==0 ? "CPU\n\0":"GPU\n\0");
clGetDeviceIDs(platform,devs[dev],1,&device,NULL);
cl_uint compute_units;
size_t global_work_size;
size_t local_work_size;
size_t num_groups;
clGetDeviceInfo(device,CL_DEVICE_MAX_COMPUTE_UNITS,sizeof(cl_uint),&compute_units,NULL);
printf("%d\n",compute_units);
if(devs[dev]==CL_DEVICE_TYPE_CPU)
{
global_work_size=compute_units*1;
local_work_size=1;
}
else
{
cl_uint ws=64;
global_work_size=compute_units*ws*7;
while((num_src_items/4)%global_work_size!=0) global_work_size+=ws;
local_work_size=ws;
};
num_groups=global_work_size/local_work_size;
context=clCreateContext(NULL,1,&device,NULL,NULL,NULL);
queue=clCreateCommandQueue(context,device,0,NULL);
if(queue==NULL)
{
printf("Compute device setup failed\n");
return(-1);
}
program=clCreateProgramWithSource(context,1,&kernel_source,NULL,NULL);
cl_uint ret=clBuildProgram(program,1,&device,"-save-temps",NULL,NULL);
if(ret!=CL_SUCCESS)
{
printf("clBuildProgram failed: %d\n",ret);
char buf[0x10000];
clGetProgramBuildInfo(program,device,CL_PROGRAM_BUILD_LOG,0x10000,buf,NULL);
printf("\n%s\n",buf);
return(-1);
}
minp=clCreateKernel(program,"minp",NULL);
reduce=clCreateKernel(program,"reduce",NULL);
src_buf=clCreateBuffer(context,CL_MEM_READ_ONLY|CL_MEM_COPY_HOST_PTR,num_src_items*sizeof(cl_uint),src_ptr,NULL);
dst_buf=clCreateBuffer(context,CL_MEM_READ_WRITE,num_groups*sizeof(cl_uint),NULL,NULL);
dbg_buf=clCreateBuffer(context,CL_MEM_WRITE_ONLY,global_work_size*sizeof(cl_uint),NULL,NULL);
clSetKernelArg(minp,0,sizeof(void*),(void*)src_buf);
clSetKernelArg(minp,1,sizeof(void*),(void*)dst_buf);
clSetKernelArg(minp,2,1*sizeof(cl_uint),(void*)NULL);
clSetKernelArg(minp,3,sizeof(void*),(void*)dbg_buf);
clSetKernelArg(minp,4,sizeof(num_src_items),(void*)&num_src_items);
clSetKernelArg(minp,5,sizeof(dev),(void*)&dev);
clSetKernelArg(reduce,0,sizeof(void*),(void*)&src_buf);
clSetKernelArg(reduce,1,sizeof(void*),(void*)&dst_buf);
CPerfCounter t;
t.Reset();
t.Start();
#define NLOOPS 500
cl_event ev;
int nloops=NLOOPS;
while(nloops--)
{
clEnqueueNDRangeKernel(queue,minp,1,NULL,&global_work_size,&local_work_size,0,NULL,&ev);
clEnqueueNDRangeKernel(queue,reduce,1,NULL,&num_groups,NULL,1,&ev,NULL);
};
clFinish(queue);
t.Stop();
printf("B/W %.2f GB/sec, ",((float)num_src_items*sizeof(cl_uint)*NLOOPS)/t.GetElapsedTime()/1e9);
dst_ptr=(cl_uint*)clEnqueueMapBuffer(queue,dst_buf,CL_TRUE,CL_MAP_READ,0,num_groups*sizeof(cl_uint),0,NULL,NULL,NULL);
dbg_ptr=(cl_uint*)clEnqueueMapBuffer(queue,dbg_buf,CL_TRUE,CL_MAP_READ,0,global_work_size*sizeof(cl_uint),0,NULL,NULL,NULL);
printf("%d groups,%d threads,count %d,stride %d\n",dbg_ptr[0],dbg_ptr[1],dbg_ptr[2],dbg_ptr[3]);
if(dst_ptr[0]==min)
printf("result correct\n");
else
printf("result incorrect\n");
}
printf("\n");
return 0;
}
если в случае с цпу помогает обычный printf, то тут..
год назад оно у меня работало, может другая ревизия amd app sdk programming guide была, может еще что-то — не знаю, но сейчас в полном тупике...
есть здесь собратья по разуму, gpu программисты?

-
comandarm
Member
всем благодарности, отладил сам
прикольная прога, на алгоритме поиска минимума в массиве gpu обходит по скорости cpu примерно в 50 раз
gpu:radeon hd 7870 2g
cpu:sempron 145 2.8ghz
буду дальше читать мануалы
прикольная прога, на алгоритме поиска минимума в массиве gpu обходит по скорости cpu примерно в 50 раз
gpu:radeon hd 7870 2g
cpu:sempron 145 2.8ghz
буду дальше читать мануалы

-
Smok
Member
- Звідки: Дніпро
как успехи у топикастера?
-
EtherealDeath
Member
- Звідки: Харьков
Smok:как успехи у топикастера?