Перейти к публикации
  • Сейчас на странице   Всего пользователей: 3   (0 пользователей, 3 гостя)

Rooster

Программирование, т. 7

  

536 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

 

Так бойз, возможно ща будет очень тупой вопрос, но есть кейс: нужно написать модуль на angular 2/4/5, чтобы он встраивался куда угодно. Ща предлагается решение с iFrame-ом :hmpalm:

Я, пока что, имею в запасе пару дней, чтобы разбомбить это решение (очевидно что если из айфрейма будет какой-нибудь попап вызываться, хуй ты его сможешь сделать полноценно драггейбл + всякое дерьмо с взаимодействиями моделей, придётся какой-нибудь ивент-бас изобретать и прочую шляпу) и предложить своё. Но я очень слаб в этом :fffuuu: Так вот, я придумал следующее решение:

 

 

Задача такая: есть некий хидер, который нужно встроить в 10 разных апликух, хотят, условно делать так:

<html>  <head>  <!-- тут всякое дерьмо -->  <body>    <iframe src="../header.html"/>    <!-- тут дальше приложение, оно либо сразу идёт, либо в ещё одном айфрейме, но это не суть-->    <script src="../polyfills.js"></script><script src="../bundle.js"></script><script src="../app.js"></script>   </body></html>
Я хочу запилить такую схему:

<html>  <head>  <!-- тут всякое дерьмо -->  <body>    <header-component/>    <!-- тут дальше приложение, без айфреймов -->    <script src="../polyfills.js"></script><script src="../bundle.js"></script><script src="../app.js"></script>     <script src="../header.js"></script> <!-- вот эту хуйню пропечатаем, так же если потребуются ещё встраиваемые компоненты, то их тоже допечатаем ниже, какой-нибудь footer -->  </body></html>
Собственно всякие бундле.джээс, полифил.джээс будут собраны отдельно и они 100% будут совместимы, просто не хотят их тянуть в один жирнющий app.js

 

Так а в чем проблема если ты придумал решение?)

А вообще если есть возможность то для модуля я бы вот 100% vue брал а не ангуляр

 

Мне нужна оценка моего решения, если оно норм, то я с ним выйду на обсуждение. Если говно из жопы, то пусть ебурят на айфреймах.

 

vue.js не особо подойдёт, так как там уже больше года на ангуларах пилят. Так то я понимаю что он проще встраивается и не требует вокруг себя никакой экосистемы ебанутой.

Поделиться сообщением


Ссылка на сообщение

помоему ангуляр для 1 компоненты которая еще и должна встраиваться куда угодно - это какая-то поплава.

хотя конечно если есть компетенции в ангуляре и ни в чем другом а эта хуйня не особо важная, типа сделать и забыть - то можно

 

по поводу твоего решения - я не спец в ангуляре, темболее 2+

но раньше кажется весь фреймворк был заточен на то что ты хуяришь ng-app практически в корень и весь твой контент работает в ангуляре

не знаю есть ли какие-то проблемы делать одну маленькуюкомпоненту ng-app`ом, спроси у своих ангулярщиков

 

вообще по большому счету однохуйственно. iframe имеет свои заморочки. встраивание компоненты напрямую - свои сложности. я бы доверился мнению фронтендеров которые это будут делать. если у вас они есть


 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

помоему ангуляр для 1 компоненты которая еще и должна встраиваться куда угодно - это какая-то поплава.

хотя конечно если есть компетенции в ангуляре и ни в чем другом а эта хуйня не особо важная, типа сделать и забыть - то можно

 

по поводу твоего решения - я не спец в ангуляре, темболее 2+

но раньше кажется весь фреймворк был заточен на то что ты хуяришь ng-app практически в корень и весь твой контент работает в ангуляре

не знаю есть ли какие-то проблемы делать одну маленькуюкомпоненту ng-app`ом, спроси у своих ангулярщиков

 

вообще по большому счету однохуйственно. iframe имеет свои заморочки. встраивание компоненты напрямую - свои сложности. я бы доверился мнению фронтендеров которые это будут делать. если у вас они есть

Не, модулей будет много. Десяток+, просто хидер в качестве самого простого примера. Так же многовероятно нужно будет встраивать подобные модули в 3rd пати системы.

Поделиться сообщением


Ссылка на сообщение

 


Че такого Mongo может чего Postgres не может в плане скейлинга 


(вопрос без подъеба (правда не знаю (но это не точно) )

Монго дешевле скейлить, он быстрее, проще настраивать

За это ты расплачиваешься консистентностью данных (ACID работает только в реляционках), что для всякой гугл аналитики не столь критично. 

Поделиться сообщением


Ссылка на сообщение
(изменено)

Я особ с айфремами не работал, но мне они чет не нравятся. Постоянно какие-то cross origin проблемы и прочая муть. А тут вроде над запилить типичный компонент. Т.е. взять тот же реакт и вебпак, написать, забандлить в header.js и рли подключить скриптом. Пусть там перед собой вставляет div и рендерит в него твой компонент. Ну эт так, первое что пришло в голову.

 

Ну а как ты написал, подключить зависимости перед скриптом, эт же вроде геморой потом будет. Типа где-то забыли что-то подключить и пошло "someVar is undefined". Или если компоненту нужны будут картинки, css или еще что-то, ты их тоже так вручную перед скриптом будешь подключать?


Изменено пользователем .felix

Поделиться сообщением


Ссылка на сообщение

​сгорел

uint32 Strlen(const char *zSrc)
{
    register const char *zIn = zSrc;
    for(;;){
        if( !zIn[0] ){ break; } zIn++;
        if( !zIn[0] ){ break; } zIn++;
        if( !zIn[0] ){ break; } zIn++;
        if( !zIn[0] ){ break; } zIn++;
    }
    return (uint32)(zIn - zSrc);
}
расчет размера строки по разнице адреса начала и конца

вот что значит писать Си код только для x86

 

это даже на x86_64 уже можно скомпилять неправильно (указав компилятору нестандартный размер "блоков" памяти)(а если еще и память нелинейная(дада у меня именно такая) и компилятор совсем другой архитектуры)

уххх

Поделиться сообщением


Ссылка на сообщение

я вообще не знаю что этот код делает


так, он че нультерминатор строки вот так ищет?

а почему вот такой 
for(;;){}
и почему 4 раза за круг?

Поделиться сообщением


Ссылка на сообщение

и почему 4 раза за круг?

​в x86 идет 4 байта на "блок" и чтоб "быстро" пролистывать идет 4 раза в одном "блоке" кода(в асме это блок с прыжком в начало и на каждую инструкцию проц по 1 такту тратить, если убрать 4 повтора оставить 1, то сам jump будет съедать больше времени чем исполение одной инструкции плюс время на переход в "прошлый блок памяти" где мы листаем 2 3 4 байт после первого)

​но в x86_64 другой размер блоков как и в любой друго архитектуре, также как и линейность памяти-перебирать адрес конца начала это плохо

 

он ищет конец памяти строки по попытке выхода из ее адреса(я думаю всем понятно что это прямой путь в утечки памяти и ошибки памяти, не все компиляторы даже для ПК будут выдавать нулевые значения по выходу из памяти)

Поделиться сообщением


Ссылка на сообщение

я думал компилятор умный и сам знает какого размера блоки и что происходит

хотя тут странная хуйня конечно..

Поделиться сообщением


Ссылка на сообщение

ах да зачем это делается-ибо дефолтные медоты strlen и тудаже printf/sprintf/и все стандартное со строками в Си просто НЕВЕРОЯТНО медленны, и написаны с использованием Слипов(чтоб избежать хардварных дедлоков)

 

и этот код на 100% безопасен на x86 процессоре, на другихже надо смотреь асм коды и тестить утечки памяти(что внезапно я и получил)

и после двухдневного фикса потоков мутексов асинхрона дедлоков(в том числе хардварных) у меня всеравно был бред с памятью, и тут опана опять фиксить надо.....ебана врот

Поделиться сообщением


Ссылка на сообщение

может в пизду это все и проститукой в веб ?

Поделиться сообщением


Ссылка на сообщение

одно другому не мешает

на двух стульях- девиз здорового человека

Поделиться сообщением


Ссылка на сообщение

и почему 4 раза за круг?

​в x86 идет 4 байта на "блок" и чтоб "быстро" пролистывать идет 4 раза в одном "блоке" кода(в асме это блок с прыжком в начало и на каждую инструкцию проц по 1 такту тратить, если убрать 4 повтора оставить 1, то сам jump будет съедать больше времени чем исполение одной инструкции плюс время на переход в "прошлый блок памяти" где мы листаем 2 3 4 байт после первого)

​но в x86_64 другой размер блоков как и в любой друго архитектуре, также как и линейность памяти-перебирать адрес конца начала это плохо

 

он ищет конец памяти строки по попытке выхода из ее адреса(я думаю всем понятно что это прямой путь в утечки памяти и ошибки памяти, не все компиляторы даже для ПК будут выдавать нулевые значения по выходу из памяти)

 

ну так компиляторы вроде умеют раскруткой циклов заниматься автоматом, разве нет?

 

или они могут только для фиксированных N в условиях?


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

или обмазываться функциональщиной 

https://gist.github.com/travisbrown/3772462

:pisubudew:

на плюсовых шаблонах скоро ИИ времени компиляции напишут, а ты какие-то вшивые башни ханойские кидаешь  :ginsgnil:


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

и почему 4 раза за круг?

​в x86 идет 4 байта на "блок" и чтоб "быстро" пролистывать идет 4 раза в одном "блоке" кода(в асме это блок с прыжком в начало и на каждую инструкцию проц по 1 такту тратить, если убрать 4 повтора оставить 1, то сам jump будет съедать больше времени чем исполение одной инструкции плюс время на переход в "прошлый блок памяти" где мы листаем 2 3 4 байт после первого)

​но в x86_64 другой размер блоков как и в любой друго архитектуре, также как и линейность памяти-перебирать адрес конца начала это плохо

 

он ищет конец памяти строки по попытке выхода из ее адреса(я думаю всем понятно что это прямой путь в утечки памяти и ошибки памяти, не все компиляторы даже для ПК будут выдавать нулевые значения по выходу из памяти)

 

 

Че за бред, си строки должны быть нуль терминированными (по крайней мере для дефолтного стрлена). Ну и это логично, если тебе надо найти конец чего-то и у тебя нет размера, то тебе нада знать признак конца.

В цикле он разименовывает указатель и сравнивает значение с нулем (можно переписать if(*zIn == '\0') break;), че и куда там "выходит за адрес"? Выйдет он за пределы только если у тебя строка не нуль терминированая, ну тут нарушается контракт метода.

Вполне себе обычная имплементация.

 

Оптимизация с ифами скорее всего ниче не даст на современных компиляторах, но если это ембеддед там часто юзаются свои компиляторы, так что может дать результат.

 

Ну и дефолтный стрлен почти всегда будет быстрее (например вот http://www.stdlib.net/~colmmacc/strlen.c.html),и никаких слипов, естественно, там нет. В ембеддеде стдлиб может офк отличаться, но там своя атмосфера.

Поделиться сообщением


Ссылка на сообщение
(изменено)

​f

Че за бред, си строки должны быть нуль терминированными

да я не уточнил сори

я код писал исходя из офф доков(по каждой функции), где написано

The first parameter is the error log message which is not null terminated

и это относится ко всем стрингам внутри либы, и возвращяемые также

и эта функция работала, так как до нее вызывается функция которая делает

memset(xxx,0,1024)

и дальше в эту "заполненную нулями" память уже все и писалось/читалось (очевидно что 99% компиляторов такбы и сделали, но когда у меня не x86 и память не одна и "контроллер памяти" выбирает какую память использовать при запросах новой памяти, да даже банально на обычно ПК в котором 4 планки памяти и вы жрете по 25% от общей памяти на такую магию....будут не нули....вобщем странный код хоть написан толковыми людьми)

сильная Си магия которая работает только "на вашем текущем компиляторе"

офк я уже давно пофиксил(да наконецто все пофиксшено, офаю иду в дотан)


Изменено пользователем hira88

Поделиться сообщением


Ссылка на сообщение

ах да зачем это делается-ибо дефолтные медоты strlen и тудаже printf/sprintf/и все стандартное со строками в Си просто НЕВЕРОЯТНО медленны, и написаны с использованием Слипов(чтоб избежать хардварных дедлоков)

 

и этот код на 100% безопасен на x86 процессоре, на другихже надо смотреь асм коды и тестить утечки памяти(что внезапно я и получил)

и после двухдневного фикса потоков мутексов асинхрона дедлоков(в том числе хардварных) у меня всеравно был бред с памятью, и тут опана опять фиксить надо.....ебана врот

какие слипы, какие дедлоки? что ты блять несешь?!

 

давай результаты тестирования своей хуйни и других имплементаций strlen - тогда потом поговорим, а пока ты втираешь нам какую-то дичь.


Публикация отключена

Поделиться сообщением


Ссылка на сообщение

Заходишь такой веб программист в топан, а тут какие-то утечки памяти, слипы, дедлоки  :_:

SKYnv, ^p1x, DIMAN123456789 и 2 другим понравилось это

Russia.png.ea080e101222d708d08842dae4ccc684.png USA.png.9b863586cd992fb91bf92ed1de03e4cc.png Israel.png.f27d10a4455f05cd161a8c2c52b8b5e1.png

Поделиться сообщением


Ссылка на сообщение

Ну и дефолтный стрлен почти всегда будет быстрее

даже на gcc последней версии, гдето в оффдоках говорят НЕ использовать strlen printf sprintf (стрлен всегда был медленный

плюс к тому что у меня порт gcc под очень ограниченный девайс где в стандартных либах/функциях поставлены слипы чтоб избегать "дедлоков" хардварных из за одновременного обращения к памяти/переферии

давай результаты тестирования своей хуйни и других имплементаций strlen - тогда потом поговорим, а пока ты втираешь нам какую-то дичь.

чекни хоть исходники gcc под ppc

у меня компилятор/стандартные либы с него портированы

увидиш что там совсем не так как на x86

ну так компиляторы вроде умеют раскруткой циклов заниматься автоматом, разве нет?

моя функция раскладывается в 1 цикл с джампом в асм коде

с чегоэто вообще компилятору таким заниматься?

начиная с -O2 только "статические" циклы типа while(i<999999)i++ переходят в статический результат

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...