Сообщения

Сообщения за 2019

Круги ада разработки

Изображение
Круги (и полукруги) ада разработки -  https://www.lucidchart.com/documents/view/d9199324-40fa-461b-b095-380a19453695 : Данная диаграмма построена c точки зрения разработчика, чтобы показать что решение основного бизнес кейса это маленькая толика разработки, т.е. это 20% времени которая дается 80% функционала, но нужно потратить еще 80% чтобы доделать оставшиеся вещи, без которых нормальной функционирование программы будет ущербным. Например без CI делать большую программу будет тяжело, т.к. не будет запускаться тестирование и раскатка не сервер. А раз не будет раскатки на сервер, то программа е будет запущена и ей никто не будет пользоваться (конечно можно сделать раскатку руками, но каждый раз делать раскатку утомительно в нормальном рабочем процессе, где каждый день могут быть десятки коммитов).

Эпиграммы программирования

Давным давно читал эпиграммы программирования и некоторые из них мне понравились, т.к. имеют вполне практическое применения. Здесь можно почитать все эпиграммы -  http://translatedby.com/you/epigrams-in-programming/into-ru/trans/ . А ниже представляю выборку наиболее интересных с моей точки зрения эпиграмм: 7. Проще написать неработающую программу, чем понять работающую. 8. Язык программирования является низкоуровневым, если написанные на нём программы требуют внимания к несущественному 9. Лучше иметь 100 функций, использующих одну структуру данных, чем 10 функций для 10 структур. 10. Быстро привыкайте к рутине: Делайте одни и те же действия одним способом. Собирайте идиомы. Стандартизируйте. 11. Если у вас есть процедура с 10 параметрами, скорее всего, парочки не хватает. 12. Рекурсия - основа вычислительного процесса, поскольку она обменивает описание на время. 14. В течение длительного периода любая программа устаревает - а затем превращается в булыжник. 15. Все должно стр

Angular динамизация

Сейчас появилось довольно много способов для решения данной проблемы - angular elements, angular portals, entry components - но расскажу о том, который может быть использован в angular6+. Задача: есть CMS, которая отдает html layout с разным набором angular компонент. Нужно запустить angular приложение для динамического layout. Пример страницы 1: < body > <app-landing>< / app-landing> < / body > Пример страницы 2: < body > < div class = "header" > <app-header>< / app-header> < / div > <app-product-details>< / app-product-details> < / body > В главном модуле ng-приложения пишем примерно такой код prepareDom ( ) ; @ NgModule ( {     //...     declarations : [ bootstrapComponent ] ,     bootstrap : [ bootstrapComponent ] ,     entryComponents : entryComponents } ) export class AppModule { } Идея заключается в том что все компоненты, которые участвуют в динами

Пример стандартного проксирования в nginx

К сожалению я уже не помни всю литературу, которую я пролазил в интернете, но довольно многие отмечали что чтобы получить такой простой код нужно потратить много крови, если ты не специализируешься на nginx. Поэтому оставлю код здесь, чтобы в следующий раз не искать. # /gateway/otherPach    --->   / otherPach   location ~ ^/gateway/(.*).(js|css|jpg|jpeg|gif|png|ico|svg|svgz|eot|otf|woff|woff2|ttf)$ {      include envvars.conf;      set $protocol "http";      if ($http_x_forwarded_proto = "https") {           set $protocol "https";      }      #$1 - otherPach        # $2 - расширения      # $gateway - переменная из envvars.conf      proxy_pass $protocol://$gateway/$1.$2;      proxy_redirect off;      #для security советуют убирать      proxy_hide_header Set-Cookie;      #заменяем и ставим свои хедеры для кешей      proxy_hide_header Pragma;      proxy_hide_header Cache-Control;      expires 365d;      add_header Cache-Control publi

JS Class with private

К сожалению JavaScript и Java одинаковы лишь первыми 4 буквами. Так например появление классов в ES6 это лишь иллюзия, никаких private\protected переменных и методов оно не принесло, но стоит отметить что код стало писать просто, не нужно запоминать эти старые подходы с прототипированием: function inherit ( ChildClass, ParentClass ) { function tmp ( ) {}; tmp.prototype = ParentClass.prototype; ChildClass.prototype = new tmp(); ChildClass.prototype.constructor = ChildClass; ChildClass.prototype.super = ParentClass.prototype; } ( function ( ) { function ParentClass ( name ) { this .name = name; } ParentClass.prototype.printName = function ( ) { console .log( this .name); }; function ChildClass ( name ) { this .super.constructor.call( this , name+ "qqq" ); } ChildClass.prototype.newPrintName = function ( ) { this .method(); }; inherit(ChildClass, ParentClass); window .ParentClass = ParentClass; window .ChildClass = ChildClass; }()); var child

Армирование бедра человека

Изображение
В университет занимался работой по превентивному армированию бедра человека. Бедро тяжело лечиться. Во многих случаях не получается восстановить первоначальную прочность кости, это ведет к малоподвижному образу, а малоподвижный образ для людей преклонного в течении 3 лет может привести к летальному исходу. Подробнее про актуальность проблемы можно почитать в научных статьях. Поэтому было решено армировать кость превентивно, если по медицинским указаниям есть предрасположенность к разрушению кости (остеопорозу). В рамках научной моделировалось нагрузка при падении и хождении человека с и без кость. и было выявлено ряд улучшения. Это только теоретическое исследование но возможно оно кому-нибудь пригодиться для более точного теоретического и практического применения. Что может быть полезным: 3d-модель механические характеристики кости схема нагрузок на кость программы для генерации ANSYS команд выводы расчетов Диссертация -  http://d21221703.samgtu.ru/sites/d21221703.samg

AngularJS dynamization

Замечу что речь пойдет про AngularJS 1.x Если хочется сделать динамическое ангуляр приложение, которое в любой момент может подгрузить что-нибудь еще ангуляр модуль, то просто так это сделать не получится. Например можно сделать два ангуляр модуля рядом: < div id = "HelloWorldApp" ng-app = "HelloWorldApp"> < div ng-controller = "HelloWorldController"> < h1> {{greeting}}< / h1> < / div> < / div> < div id = "HelloUserApp" ng-app = "HelloUserApp"> < / hello-User-Component> </ div> Но нельзя вставить их друг в друга < div id = "HelloWorldApp" ng-app = "HelloWorldApp"> < div id = "HelloUserApp" ng-app = "HelloUserApp" >< / div> < / div> По этой же причине нельзя вставить див внутрь ангуляр приложения и потом его запустить. А т.к. почти всегда ангурял занимает всю страницу