Вопрос - ОтветЗадал вопрос - получил ответ...
#742
Отправлено 02.02.2020, 02:54:04
Помню, шеф, директор франча писал в 1С на английском.
Бывших сишников не бывает, и очень сложно избавиться от привычки
Зато потом был полный аут, когда кто-то "не говорящий" на английском брался доделывать. В одном месте переменные на русском, в другом на английском.
В 1С писать нужно только на языке Пушкина, Толстого, Достоевского!
Ну в принципе, 1С хороший вариант, для тех кто ну совсем не в зуб ногой в английском, вообще вот никак.
Сообщение отредактировал trnj: 02.02.2020, 03:12:17
#744
Отправлено 08.03.2020, 03:28:18
Интересно как работает Dalvik - https://ru.wikipedia.org/wiki/Dalvik и ART - https://ru.wikipedia...Android_Runtime ? Некоторые библиотеки в Android начинаются с import java.*; допустим тот-же String в Android это - import java.lang.String; - https://docs.oracle....ang/String.html т.е. Android использует Java библиотеки. Когда компилируешь в Java получаешь jar файл, а когда компилируешь в Android то apk файл.
Вот схема Dalvik/ART:
#745
Отправлено 08.03.2020, 03:40:12
Интересно как работает Dalvik - https://ru.wikipedia.org/wiki/Dalvik и ART - https://ru.wikipedia...Android_Runtime ?
P.S. Хотелось-бы создать свою виртуалку см. тут - https://vse.kz/topic...5#entry36105299, чтобы сделать свои умные часы. Т.е. в часы встрою допустим grub и Linux, при запуске App, запустится моя виртуалка, которая будет исполнять App, и будет обращаться к устройству не напрямую, а через виртуалку, и многие функции будут запрещены, это предотвратит вредоносный код и защитит от вирусов и троянов.
Кстате можете почитать ещё эту статью про Dalvik и Java - https://habr.com/ru/post/394663/
#746
Отправлено 11.03.2020, 03:32:08
Вопрос а кто нибудь читает ещё IT книги в печатном издание? Я вот примерно с 2011 года перешёл на формат pdf. Это мой ebook reader oyo который я купил в 2011м году, очень удобно допустим едешь в поезде, или находишься в больнице, и все книги с собой, устройство поддерживает так-же mp3, jpg, bmp, png, а так-же есть убогий интернет браузер, устройство через WLAN может подключаться к интернету, и можно одним кликом заказать вроде себе книгу через интернет:
см.
Вот думаю теперь перейти на амазоновский ebook reader? А кто как читает книги в 2020м году?
#747
Отправлено 11.03.2020, 09:18:54
А как придётся.
Вот у меня два шкафа книг от MS с нулевых годов когда они еще на электронный формат не перешли
И еще пацсталом коробок десять
А дома шкаф с 90х стоит я в Москве в букинисте специальном айтишном покупал когда учился
Теперь есть раритеты - про юзанье фидо и шлюзов вебстраница по почтовому запросу, каталог всех вебсайтов в мире в малюсеньком буклете, ну и там турбопаскаль, ассемблер под х86, а!! машинная графика на Си от Аммерала..
чоб не читать..
#748
Отправлено 20.03.2020, 04:24:37
Интересно как работает Dalvik - https://ru.wikipedia.org/wiki/Dalvik и ART - https://ru.wikipedia...Android_Runtime ?P.S. Хотелось-бы создать свою виртуалку см. тут - https://vse.kz/topic...5#entry36105299, чтобы сделать свои умные часы. Т.е. в часы встрою допустим grub и Linux, при запуске App, запустится моя виртуалка, которая будет исполнять App, и будет обращаться к устройству не напрямую, а через виртуалку, и многие функции будут запрещены, это предотвратит вредоносный код и защитит от вирусов и троянов.
Кстате можете почитать ещё эту статью про Dalvik и Java - https://habr.com/ru/post/394663/
Советую использовать Webassembly в качестве вашей виртуалки.
#749
Отправлено 20.03.2020, 11:27:43
typedef struct { char cmd; // Команды, например mov char cnt_param; // Количество параметров long position; // Позиция (чисто для exe-шника) int param1; // Параметр 1 int param2; // Параметр 2 int param3; // Параметр 3 } BINARY;
К примеру:
BINARY bin; bin.cmd = MOV1; bin.cnt_param = CNT_PARAM_2; // 2 параметра REG0 и (char)'a' bin.param1 = REG0; bin.param2 = (char)'a';
это main.h
// Commands // Basic #define NOP 0 #define BYTE 1 #define MOV1 2 //(reg, val) #define MOV2 3 //(reg, reg) #define MOV3 4 //(reg, adr) #define CMP1 5 //(reg, val) #define CMP2 5 //(reg, adr) #define JMP 6 #define JEQ 7 #define JNE 8 #define JMT 9 #define JLT 10 #define JME 11 #define JLE 12 #define PUSH 13 #define POP 14 #define RETURN 15 // Math #define NEG 200 #define ADD 201 #define SUB 202 #define MUL 203 #define DIV 204 // System #define SET_TIMER 210 #define SET_DATA 220 // Get Data(addr, val) #define SET_DATA_EX 221 // Get Data(addr, val) #define GET_DATA 222 // Get Data(addr) #define RESET 255 // For compiler #define SET_MODEL 200 #define MODEL_SP100A16 1 // Registers #define REG_0 0 #define REG_1 1 #define REG_2 2 #define REG_3 3 #define REG_4 4 #define REG_5 5 #define REG_6 6 #define REG_7 7 #define REG_8 8 #define REGADR_0 100 #define REGADR_1 101 #define REGADR_2 102 #define REGADR_3 103 #define REGADR_4 104 #define REGADR_5 105 #define REGADR_6 106 #define REGADR_7 107 #define REGADR_8 108 #define REGJMP 200 ////////////////////////////////////////////////////////////////////////////////////////////////////////// // Arguments #define SYSCMD 1 #define FILENAME 2 #define CMD 3 #define PARAM_1 4 #define PARAM_2 5 #define PARAM_3 6 // Count #define CNT_PARAM_0 0 #define CNT_PARAM_1 1 #define CNT_PARAM_2 2 #define CNT_PARAM_3 3 // Length typedef struct { char cmd; char cnt_param; long position; int param1; int param2; int param3; } BINARY;
Это main.c
//GetPrivateProfileString("states", "title", 0, returnValue, 100, ini); #include "main.h" #include <stdio.h> #include <stdlib.h> void display_help() { printf("\nasm2obj --make <filename.asm> <filename.obj>"); exit(0); } void convert_asm_to_bat(char *filename_asm, char *bin_filename, char *filename_bat) { FILE *f_asm; FILE *f_bat; char buf_asm[80]; char buf_bat[500]; f_asm = fopen(filename_asm, "r"); f_bat = fopen(filename_bat, "w"); sprintf(buf_bat, "asm2obj.exe --new %s\n", bin_filename); fputs(buf_bat, f_bat); while(1) { if(feof(f_asm)) break; fgets(buf_asm, 80, f_asm); sprintf(buf_bat, "asm2obj.exe --c %s %s\n", bin_filename, buf_asm); fputs(buf_bat, f_bat); } fclose(f_asm); fclose(f_bat); } void append_to_file(char *filename, long position, char cmd, char cnt_param, int param1, int param2, int param3) { BINARY bin; FILE *f; f = fopen(filename, "a+b"); bin.cmd = cmd; bin.cnt_param = cnt_param; bin.param1 = param1; bin.param2 = param2; bin.param3 = param3; fwrite(&bin, sizeof(bin), 1, f); fclose(f); } int main(int argc, char **argv) { FILE *f; long position = 0; int param1 = 0; int param2 = 0; int param3 = 0; if(argc == 1) { display_help(); exit(0); } if(argc > 1) { if(strcmp(argv[SYSCMD], "--new") == 0) { f = fopen(argv[FILENAME], "w+b"); fclose(f); exit(0); } else if(strcmp(argv[SYSCMD], "--make") == 0) { convert_asm_to_bat(argv[SYSCMD+1], argv[SYSCMD+2], "tmpmakeasm.bat"); system("tmpmakeasm.bat"); remove("tmpmakeasm.bat"); } else if(strcmp(argv[SYSCMD], "--setmodel")) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, NOP, CNT_PARAM_1, param1, param2, param3); exit(0); } else if(strcmp(argv[SYSCMD], "--c") == 0) { if(strcmp(argv[CMD], "NOP") == 0) { append_to_file(argv[FILENAME], position, NOP, CNT_PARAM_0, param1, param2, param3); } else if(strcmp(argv[CMD], ".INCLUDE") == 0) { } else if(strcmp(argv[CMD], ".BYTE") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, BYTE, CNT_PARAM_1, param1, param2, param3); } // Basic else if(strcmp(argv[CMD], "MOV1") == 0) { param1 = atoi(argv[PARAM_1]); param2 = atoi(argv[PARAM_2]); append_to_file(argv[FILENAME], position, MOV1, CNT_PARAM_2, param1, param2, param3); } else if(strcmp(argv[CMD], "MOV2") == 0) { param1 = atoi(argv[PARAM_1]); param2 = atoi(argv[PARAM_2]); append_to_file(argv[FILENAME], position, MOV2, CNT_PARAM_2, param1, param2, param3); } else if(strcmp(argv[CMD], "MOV3") == 0) { param1 = atoi(argv[PARAM_1]); param2 = atoi(argv[PARAM_2]); append_to_file(argv[FILENAME], position, MOV3, CNT_PARAM_2, param1, param2, param3); } else if(strcmp(argv[CMD], "CMP1") == 0) { param1 = atoi(argv[PARAM_1]); param2 = atoi(argv[PARAM_2]); append_to_file(argv[FILENAME], position, CMP1, CNT_PARAM_2, param1, param2, param3); } else if(strcmp(argv[CMD], "CMP2") == 0) { param1 = atoi(argv[PARAM_1]); param2 = atoi(argv[PARAM_2]); append_to_file(argv[FILENAME], position, CMP2, CNT_PARAM_2, param1, param2, param3); } else if(strcmp(argv[CMD], "JMP") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, JMP, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "JEQ") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, JEQ, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "JNE") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, JNE, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "JMT") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, JMT, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "JLT") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, JLT, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "JME") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, JME, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "JLE") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, JLE, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "PUSH") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, PUSH, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "POP") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, POP, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "RETURN") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, RETURN, CNT_PARAM_1, param1, param2, param3); } // System else if(strcmp(argv[CMD], "SET_TIMER") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, SET_TIMER, CNT_PARAM_1, param1, param2, param3); } else if(strcmp(argv[CMD], "SET_DATA") == 0) { param1 = atoi(argv[PARAM_1]); param1 = atoi(argv[PARAM_2]); append_to_file(argv[FILENAME], position, SET_DATA, CNT_PARAM_2, param1, param2, param3); } else if(strcmp(argv[CMD], "SET_DATA_EX") == 0) { param1 = atoi(argv[PARAM_1]); param1 = atoi(argv[PARAM_2]); append_to_file(argv[FILENAME], position, SET_DATA_EX, CNT_PARAM_2, param1, param2, param3); } else if(strcmp(argv[CMD], "GET_DATA") == 0) { param1 = atoi(argv[PARAM_1]); append_to_file(argv[FILENAME], position, GET_DATA, CNT_PARAM_1, param1, param2, param3); } } else { printf("\nWrong command"); display_help(); return 0; } } return 0; }
Сначало файл превращает из asm в bat файл, потом сравнивает аргументы argv (просто сплитить особенно в Си это большой гемморой), потом я запускаю этот bat файл и создаю сначала пустой obj файл, потом сериализую и аппендую в файл BINARY.
#750
Отправлено 20.03.2020, 11:33:40
Вот к примеру код на ассемблере, файл 001.asm:
NOP NOP NOP MOV1 0 1
Вот obj файл:
В 16ричных (hex):
3 раза NOP, и один раз MOV:
P.S:
параметр position в этой структуре, зависит от размера команды, и постоянно складывается, т.е. при следующем вызове append_to_file position будет увеличиться что типа такого positon += size_of_cmd; где size_of_cmd это размер команды (допустим у NOP size_of_cmd=1, у MOV size_of_cmd = для 16 битной архитектуре где-то примерно 5 байт - 1байт для команды MOV, и 2 байта для первого параметра допустим REG0, и для второго параметра допустим 1) т.е. MOV REG01, 1 = size_of_cmd = 5, чтобы это потом в exe-шнике не нужно было считать, допустим параметр position нужен при jmp, или при вызове @adressof...
typedef struct { char cmd; char cnt_param; long position; int param1; int param2; int param3; } BINARY;
Потом нужно только из obj в bin сделать компилятор типа obj2bin.exe 001.obj 001.bin
Потом можно вызвать эмулятор, тот что я уже разработал, и раньше сюда писал - https://vse.kz/topic...5#entry36105299
Компилятор считывает obj и сераилизирует в BINARY:
typedef struct { char cmd; char cnt_param; long position; int param1; int param2; int param3; } BINARY;Потом считывает параметры BINARY, и компилирует в bin в зависимости от архитектуры. Потом можно запускать всё это в эмуляторе.
Сообщение отредактировал lexx821: 20.03.2020, 12:19:32
#751
Отправлено 20.03.2020, 12:14:01
1. Выше тут - https://vse.kz/topic...5#entry36105303 я напсал небольшой код эмуляции клавиатуры: F1 и F2 кнопки будут с левой стороны, F3 и F4 с правой стороны, F5 это кнопка посередине. По F1 и F2 выбераешь символ, а по F3 и F4 перемещаешь курсор, F5 закрыть клавиатуру, но в том примере F5 это выход из программы.
2. Так-же там пример по программированию в стиле как в Win32 на Си в Visual C++ 6.0
3. Там есть пример так-же "многозадачности" - https://vse.kz/topic...5#entry36105302, ставлю вектор прерывания на часы, а так-же свой обработчик прерываний... и в дочерней программе app.exe вызываю прерывание, и мой обработчик прерываний срабатывает в родительском приложение...
P.S. Хотелось типа таких часов сделать:
Сообщение отредактировал lexx821: 20.03.2020, 12:20:32
#753
Отправлено 13.06.2020, 03:51:30
Вопрос больше относится к западным компаниях. Я хотел бы чтобы мне объяснили без всякого высокомерия и без оскорблений зачем нужно ООП веб разработчику, и почему работадатель требует знания ООП и ООП фреймворков, и зачем на клиентской части тяжёловесные JavaScript библиотеки? Ведь такие вещи затормаживают очень загрузку сайта. Вот домашний интернет по контракту 50 мбит/сек., а Google Internet Speed Test выдаёт мне: download 18.5 мбит/сек, а upload 9.65 мбит/сек. Если допустим 3 компьютера + таблет параллельно одновременно в интернете, допустим на 2 девайсах параллельно целый день играет музыка с ютуба, когда запускаю какой-нибудь интернет магазин где-то секунд 10 грузится страница, когда смотришь исходники в DevTools то там JQuery, MooTools, AngularJS. Так-же Google Fonts тормозят сильно, какой-нибудь интернет магазин ставит Google Fonts. В европе плохой инет, в отличие от стран СНГ и РФ, и когда дешёвый хостинг, то и скорость не быстрая, допустим у меня сервер, и сайт открывается где-то через 5-8 секунд. Пожайлуста ответьте мне без высокомерия и оскорбления. Никто мне не может внятно объяснить, просто тупо говорят что нужно изучать ООП, ORM, jQuery, AngularJS..., а зачем не говорят. И отказы в основном шли потому, потому-что требовали чтобы я знал какие-то тяжёловесные и сложные фреймворки, причём у каждой фирме выбран свой фреймворк. На многих программистов я сильно злюсь, так-как именно из-за них у меня много отказов. И как устроится в IT если каждая IT фирма использует какой-то определённый фреймворк? Причём часто встречаются на сайтах по поискую работы какие-то шаблонные фразы типа: "Требуется программист со знанием в ООП", и "знание такого-то фреймворка", и после более 200 отказов просто начинается диссоциативное расстройство идентиичности или усиливается амбивалентность. Само обидное туда берут каких-то программистов, которые не в состояние внятно объяснить допустим в SQL что такое первичный и внешний ключ. По моему мнению, мне шли постоянные отказы потому, потому-что смотрят не на фирме моё резюме, а на фирме-посреднике, почему-то чаще всего адрес фирмы не указан, только указан адрес фирмы-посредника. Я уверен если я позвоню на IT фирму и тем более в фирму посредник, они не смогут ответит на мой вопрос почему они используют именно ООП.
Вот пример объявления:
P.S.:Я был на нескольких фирмах, и там никто толком ничего не знал... и всем было поровну на чём программировать.
#754
Отправлено 13.06.2020, 21:40:16
jQuery, AngularJS..
Итак, короче я провёл небольшой тест:
Вот этот код у меня загружается за 20мсек. (без JQuery но использовал QuerySelector):
<!DOCTYPE html> <html> <head> <title>QuerySelector</title> <script> var dt = Date.now(); </script> <script> window.onload = function() { var el = document.querySelectorAll('#content'); el[0].setAttribute('style', 'color:red'); el[0].innerHTML = 'Test'; window.document.title = Date.now() - dt; } </script> </head> <body> <div id="content"></div> </body> </html>
А этот код загружается за 120 мсек (c JQuery):
<!DOCTYPE html> <html> <head> <title>QuerySelector</title> <script> var dt = Date.now(); </script> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script> window.onload = function() { $('#content').css('color', 'red'); $('#content').html('JQ Test'); window.document.title = Date.now() - dt; } </script> </head> <body> <div id="content"></div> </body> </html>
Т.е. если использовать JQuery, то в 6 раз медленнее грузится. Вот это меня рассмешило LOL https://qna.habr.com/q/448058
Почему говорят что jquery не нужен?
Здравствуйте, в последнее время все чаще слышу что jquery не нужен, прошлый век и тд
Объясните пожалуйста почему?
что изменилось за последние лет 5, что он вдруг стал больше не нужен?
Что тогда является современной заменой jquery?
Ощущение что что то пропустил
Сколько не писал на js, Jquery Всегда облегчал и у меньшал код
Почему он становвиться не нужным?
Ответ:
Так говорят скорее всего потому, что не понимают что на самом деле jQuery дает. Можно написать все на чистом js, но jq вразы ускоряет разработку. Соответственно люди которые кричат против jq и получают деньги за часы работы заинтересованы в том, чтобы делать по дольше задачу и получить больше денег.
Такой себе способ раздобыть немножно монет и понимания работы чистого js. ))
Я пытался реализовать на js обычную кнопку "наверх", и плавный переход по лендинку вверх и в низ. Чесн скажу, я задолбался. Я знаю что на jq я решу это быстро и спокойно, на на нейтиве - это изобретения велосипеда с 0
Только тот человек, который отвечал, не знает что такое медленный интернет, один человек который живёт в России и далеко от Москвы (в Ростовской области) сказал мне что у него интернет 100 мбит/сек, естественно он не переживает у него всё за секунду загрузилось, мой же интернет 50 мбит/сек по контракту, а по факту где-то 18-20 мбит/сек. В Европе интернет медленный, в Казахстане не знаю как, но в России у всех быстрый от 100 мбит, вот статистика https://reform.by/wp...eenshot_6-1.jpg
P.S.: Сейчас только-что я проверил скорость интернета: download: 23.1 мбит/с, upload: 10.8 мбит/с.
Сообщение отредактировал lexx821: 13.06.2020, 21:45:27
#755
Отправлено 17.06.2020, 21:52:36
Типа :
Я пытался реализовать на js обычную кнопку "наверх", и плавный переход по лендинку вверх и в низ. Чесн скажу, я задолбался. Я знаю что на jq я решу это быстро и спокойно, на на нейтиве - это изобретения велосипеда с 0
А о проблемах которые последуют за этим никто не пишет.
Вот и получается те кто только читает в инете, они всегда ЗА какой-нибуть фреймворк.
Очень редко встречаются статьи где реально рассказывают о проблемах с которыми встречаются разрабы.
Сообщение отредактировал asr: 18.06.2020, 08:27:25
Количество пользователей, читающих эту тему: 0
пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0